两数之和

两数之和

传送门

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);
    }
};
posted @ 2021-02-23 21:39  Calculus9  阅读(47)  评论(0编辑  收藏  举报