1. 两数之和

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

输入:nums = [2,7,11,15], target = 9

输出:[0,1]

解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

var nums = [2,7,11,15], target = 9;

解法一:暴力破解
var twoSum = function(nums, target) {
    for(let i = 0;i < nums.length;i ++){
        for(let j = i + 1;j < nums.length;j ++){
            if(nums[i] + nums[j] === target){
                  return [i,j]
            }
        }
    }
}
解法二: 双指针
var twoSum = function(nums, target) {
    let i = 0;
    let j = i + 1;
    while(i < nums.length){
        if(nums[i] + nums[j] != target){
            j ++;
            if(j === nums.length){
                i++;
                j = i + 1;
            }
        }else{
            return [i,j]
        }
    }
};
解法三: HashMap
var twoSum = function(nums, target) {
    let map = new Map();
    for(let i = 0;i < nums.length;i ++){   
       if(map.has(nums[i])){
           return [map.get(nums[i]),i]
       }
       map.set(target - nums[i],i);
    }
};