(算法)两数之和

74 阅读1分钟

题目

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

思路

  • 创建一个空哈希表
  • 遍历数组,查看target与当前元素的差是否在哈希表中。
  • 若不存在,则将当前元素以key的形式存入哈希表,值为当前元素的索引值
  • 若存在,则直接返回当前元素的索引值哈希表中存在的元素的索引值
    var twoSum = function (nums, target) {
        let map = {}
        for (let i = 0; i < nums.length; i++) {
            let number = nums[i]
            let number2 = target - number
            if (number2 in map) {
                return [map[number2], i]
            } else {
                map[number] = i
            }
        }
    }