leetcode第一題
leetcode刷題思路記錄
第一題:
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
**使用語言:**javascript
解題思路:
第一種:
看到這個題的第一反應就是暴力解題,利用迴圈巢狀來進行解題。
迴圈遍歷陣列中的每一個數,讓其與它之後的數進行迴圈相加,判斷是否等於目標值,等於則輸出即可。
提交程式碼:
var twoSum = function(nums, target) {
for(let i=0;i<nums.length;i++){
for(let j=i+1;j<nums.length;j++){
if(nums[i]+nums[j] === target){
return [i,j];
}
}
}
};
執行用時:144ms;記憶體消耗:38.6MB
時間複雜度:O(N^2),其中N是陣列中的元素數量
空間複雜度:O(1)
第二種:
雜湊表方法。
顯而易見,第一種方法在尋找target-nums[i]的時候耗時過久,用了O(n),可以利用雜湊表的方式,減少尋找target-nums[i]的耗時,將耗時從O(n)減少至O(1)。
建立一個雜湊表,對於每一個nums[i],從雜湊表中去尋找與其對應的target-nums[i],若不存在,則將自己插入到雜湊表中,繼續尋找;若存在,則返回這兩個值所對應的索引值。
提交程式碼:
var twoSum = function(nums, target) {
let numsHash = {};
for(let i=0;i<nums.length;i++){
const numsNow = nums[i];
const numsTarget = target - numsNow;
const numsTargetIndex = numsHash[numsTarget];
if(numsTargetIndex === undefined){
numsHash[numsNow] = i;
}else{
return [numsTargetIndex,i];
}
}
};
執行用時:84ms;記憶體消耗:39.2MB
時間複雜度:O(n),n是陣列中元素的數量
空間複雜度:O(n),n是陣列中元素的數量。主要為雜湊表的開銷。
相關文章
- 用 Rust 刷 leetcode 第一題RustLeetCode
- 【leetcode 簡單】 第一百零六題 壓縮字串LeetCode字串
- Leetcode第一題:兩數之和(3種語言)LeetCode
- LeetCode 演算法題系列(第一週 25道)LeetCode演算法
- LeetCode 之 JavaScript 解答第一題 —— 兩數之和(Two Sum)LeetCodeJavaScript
- leetcode第一百一十九題:楊輝三角ⅡLeetCode
- LeetCode問題LeetCode
- LeetCode題解第122題LeetCode
- leetcode小題解析LeetCode
- [leetcode 題解] 849LeetCode
- leetcode每日一題LeetCode每日一題
- Leetcode 全套題解LeetCode
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- leetcode 455題 javaLeetCodeJava
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- Leetcode題解1-50題LeetCode
- LeetCode刷題之第701題LeetCode
- leetcode題解(陣列問題)LeetCode陣列
- 【leetcode 簡單】 第九十題 字串中的第一個唯一字元LeetCode字串字元
- LeetCode刷題記錄LeetCode
- Leetcode第1~10題LeetCode
- Leetcode 565 & 240 題解LeetCode
- leetcode刷題筆記LeetCode筆記
- 如何使用leetcode刷題LeetCode
- Leetcode刷題分類LeetCode
- LeetCode 刷題筆記LeetCode筆記
- LeetCode 面試題01.06LeetCode面試題
- Leetcode每日一題(1)LeetCode每日一題
- LeetCode 解題彙總LeetCode
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列
- LeetCode演算法題LeetCode演算法
- leetcode:確實的第一個整數(java)LeetCodeJava
- LeetCode 41. 缺失的第一個正數LeetCode
- LeetCode-278-第一個錯誤的版本LeetCode
- leetcode題解(查詢表問題)LeetCode