/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
* leetcode 第1题 两数之和
*这道题用两层循环时间复杂度比较高,但是容易想到。
我这里用的是map集合,主要是因为知道map的键,来查找值的话是很快的。
当我们遍历到一个数的时候,就把这个数放到map中,然后遍历下一个数的时候
首先通过target减去当前的这个数 得到的还是一个数,然后我们把这个数看成是map的
键 去map中找,如果找到了那么就完事了,如果没有找到,就把当前循环到的数当成键加入
到map中。这样我们通过一次循环就可以找到两数之和为目标值的数。
这个题目关键是:知道map在已知键的情况下,查询是很快的。
*/
var twoSum = function(nums, target) {
let map = new Map()
for(let i=0;i<nums.length;i++){
if(map.get(target-nums[i])!=undefined&&map.get(target-nums[i])!=i){
let arr=[]
arr.push(i)
arr.push(map.get(target-nums[i]))
return arr;
}
map.set(nums[i],i)
}
};
let res = twoSum([3,3],6)
console.log(res)
展开
评论