8、两数之和

描述

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,

你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的

假设给出的数组中只存在唯一解

例如:

给出的数组为 {20, 70, 110, 150},目标值为90
输出 index1=1, index2=2

 

示例1

输入:

[3,2,4],6

返回值:

[2,3]

说明:

因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以输出[2,3] 
/**
  * 
  * @param numbers int整型一维数组 
  * @param target int整型 
  * @return int整型一维数组
  */
// 将每次访问过的元素依次放入map集合,避免同一元素计算两次
function twoSum( numbers ,  target ) {
    let res = [];
    let map = new Map();
    for(let i=0; i<numbers.length; i++){
        // map集合中存在对应的值
        if(map.has(target - numbers[i])){
            return([map.get(target - numbers[i])+1, i+1]);
        }else{
            // 不存在,将该值存入map
            map.set(numbers[i],i);
        }
    }
}
module.exports = {
    twoSum : twoSum
};

 

 

上一篇:[LC] 167. Two Sum II - Input array is sorted


下一篇:图综合练习--构建邻接表