leetcode 两数之和(JavaScript)

794 阅读1分钟

解法1:利用Map实现,key为数组值,value为数组下标

  1. map.has(target - nums[n]) 判断Map中是否有key为(target - nums[i]) ==> 对应数组的值
  2. map.get(target - nums[i]) 根据key获取Map中符合条件的value ==> 对应数组下标
function getTwoNumsSum(nums, target) {
    const numsMap = new Map()
    for (let i = 0; i < nums.length; i++) {
        if(numsMap.has(target - nums[i])) {
        return [i, numsMap.get(target - nums[i])]
        }
        numsMap.set(nums[i], i)
    }
}

解法2:冒泡

function getTwoNumsSum2(nums, target) {
    for (let i = 0; i < nums.length; i++) {
        for (let j = nums.length; j > i; j--) {
            if (nums[i] + nums[j] === target) {
                return [i, j]
            }
        }
    }
}