# NC61 两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f (opens new window)

# 描述

给出一个整型数组 numbers 和一个目标值 target, 请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。 (注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)

示例1:

输入: [3,2,4],6
返回值:[2,3]
说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 小于 下标3 ,所以返回[2,3]   

示例2:

输入: [20,70,110,150],90
返回值: [1,2]
说明: 20+70=90 

# 解答

/**
  * 
  * @param numbers int整型一维数组 
  * @param target int整型 
  * @return int整型一维数组
  */
function twoSum( numbers ,  target ) {
    const map = new Map();

    // map 中的数的索引都比 当前数的索引 小
    for (let i = 0, len = numbers.length; i < len; i++) {
        const num1 = numbers[i];
        const num2 = target - num1;

        if (map.has(num2)) {
            return [map.get(num2) + 1, i + 1]
        } else {
            map.set(num1, i);
        }
    }
}
module.exports = {
    twoSum : twoSum
};
本章目录