【从零开始的JavaScript力扣刷题】1. 两数之和

92 阅读1分钟

leetcode-cn.com/problems/tw…

image.png

  1. 暴力枚举:双for循环
var twoSum = function(nums, target) {
    for(var i=0; i<nums.length; i++){
        for(var j=i+1; j<nums.length; j++){
            if(nums[i]+nums[j] === target){
               return [i, j];
            }
        }
    }
};
  • 错误记录:j=0,会出现用同一个数的情况
  1. 哈希表
var twoSum = function(nums, target) {
    let map = new Map();    //创建Map
    for(let i=0; i<nums.length; i++){
        let j = target - nums[i];    //判断map中是否存在target-nums[i]的key值
        if(map.has(j)){    //如果j存在则返回true,否则返回false
            return [map.get(j),i]; //返回j的值
        }
        map.set(nums[i], i); //根据键存储值
    }
}

图解算法:leetcode-cn.com/problems/tw…