LeetCode-两数之和问题

182 阅读1分钟

要解决的问题?

接收  nums = [2, 7, 11, 15], target = 9 => nums[0] + nums[1] = 2 + 7 = 9

返回  [0, 1]

注:只会有一个答案


思路

  1. 要得到的是两个“互补”数字,相加等于target。
  2. 操作数组时将当前数字和索引作为map的键和值,快速定位“互补”数字位置。
  3. 遍历数组检查当前数的“互补”数在map中是否存在,如果存在则返回值和当前元素索引,如果不存在则存入当前数为键当前索引为值。

代码

var twoSum = function (nums, target) {
  let obj = {};
  for (var i = 0; i < nums.length; i++) {
    if (obj[target - nums[i]] !== undefined) {
      return [obj[target - nums[i]], i];
    }
    obj[nums[i]] = i;
  }
};