兩數之和數組
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。 你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。spa
給定 nums = [2, 7, 11, 15], target = 9code
由於 nums[0] + nums[1] = 2 + 7 = 9 因此返回 [0, 1]cdn
var twoSum = function(nums, target) {
const comp = {};
for(let i=0; i<nums.length; i++){
if(comp[nums[i] ]>=0){
return [ comp[nums[i] ] , i]
}
comp[target-nums[i]] = i
}
};
複製代碼
關鍵在於:comp 這個對象對象
key: 存取 目標(target) - num[i] 的結果blog
value: 存取 能算出該結果的索引值索引
邏輯以下:leetcode
comp[2] 爲 undefindget
9 - 2 = 7;it
也就是隻須要找到下個數值爲7的時候就是想要的。
comp[7] 在comp對象中有:
說明 以前計算過 7 這個數字有匹配的。
直接返回 以前的索引:comp[7], 當前索引