示例1:

输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例2:

输入:nums = [3,2,4], target = 6 输出:[1,2]


题解:

这道题,用字典最快。

方法一:

  1. /**
  2. * @param {number[]} nums
  3. * @param {number} target
  4. * @return {number[]}
  5. */
  6. var twoSum = function(nums, target) {
  7. const dict = new Map()
  8. for (const [index, item] of nums.entries()) {
  9. const mate = target - item
  10. if (dict.has(mate)) {
  11. return [dict.get(mate), index]
  12. } else {
  13. dict.set(item, index)
  14. }
  15. }
  16. };

方法二:

使用了some方法

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    const map = new Map();
    let result
    nums.forEach((number, index) => map.set(number, index));
    nums.some((number, index) => {
        if (map.has(target - number) && map.get(target - number) !== index) {
            result = [index, map.get(target - number)];
            return true;
        }
    });
    return result;
};