描述
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数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
};