两数之和
1.indexOf
扫描当前数组,同时记录下tmp=target-nums[i]的值,通过indexOf寻找tmp是否存在于数组内,存在则返回。正序扫描:队首元素shift时,会改变数组的下标位置。因而逆序扫描,pop掉队尾的元素。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let i=nums.length-1;
while(i>=0)
{
let tmp=target-nums[i];
nums.pop();
if(nums.indexOf(tmp)!=-1)
{
return [nums.indexOf(tmp),nums.length]
}
i--;
}
};
2.Map
var twoSum = function(nums, target) {
let mp=new Map();
for(let i=0;i<nums.length;i++)
{
let tmp=target-nums[i];
if(mp.has(tmp))
{
return [mp.get(tmp),i];
}
mp.set(nums[i],i);
}
};