[路飞]_两数之和

133 阅读1分钟

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

解题思路

  • 由题可见,nums中的每一个元素只能对应一个值相加能得到target
  • 我们可以使用target分别减去nums中的每一个元素得到一个对应值,如果对应值未在容器中出现,那么我们需要将nums此时的元素存入容器,一边后续遍历查找结果
  • 如果所得值存在于容器中,那么直接返回结果

代码如下:

var twoSum = function(nums, target) {
    let map = new Map();
    for(let i = 0, len = nums.length; i < len; i++){
        if(map.has(target - nums[i])){
            return [map.get(target - nums[i]), i];
        }else{
            map.set(nums[i], i);
        }
    }
    return [];
};