LeetCode 1.两数之和

194 阅读1分钟

解法

解法1

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for(let i = 0;i<nums.length;i++){
        //看用目标值 - 当前值 得到的值  看时候在当前值后面出现  使用数组API
        let lastIndex =  nums.indexOf(target - nums[i],i+1)
        if(lastIndex != -1 ){
            return [i,lastIndex]
            break
        }
    }
};

解法2


 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    //使用map来缓存数据,空间换时间
    let map = new Map()
    for(let i = 0;i<nums.length;i++){
        let num = target - nums[i]
        //看map中是否有差值,有的话直接返回下标,没有的话加入map
        if(map.has(num)){
            return [map.get(num),i]
        }else {
            map.set(nums[i],i)
        }
    }
};``