給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那兩個整數,並返回他們的數組下標。數組
你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。ui
示例:spa
給定 nums = [2, 7, 11, 15], target = 9code
由於 nums[0] + nums[1] = 2 + 7 = 9 因此返回 [0, 1]element
遍歷 nums,用一個hashmap 存儲已經訪問過的數字和對應的下標,若 hashmap 中存在一個鍵與 target - nums[i] 相等,說明找到了與該數字相加等於 target 的數字,返回 hashmap 中對應的鍵值和該數字的下標。get
/** * @param {number[]} nums * @param {number} target * @return {number[]} */
var twoSum = function (nums, target) {
const visited = {} // 記錄出現的數字, 空間複雜度N
for (let index = 0; index < nums.length; index++) {
const element = nums[index];
if (visited[target - element]) {
return [visited[target - element] - 1, index]
}
// 這裏爲何不直接等於 index 呢?由於 index 會有爲 0 的狀況,這個時候,上述寫法就有問題了,由於 0 爲 false
visited[element] = index + 1;
}
return [];
};
console.log(twoSum([2, 7, 11, 15], 22))
複製代碼