题解 | #两数之和#
两数之和
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
function twoSum(numbers, target) {
// write code here
// 建议先看看map对象的常用api
//创 建Map ---let map = new Map();
// 给map对象添加内容 --- map.set(key, value);
// 根据key从map对象中获取值 --- map.get(key);
// 判断map对象中是否有某个key,返回Boolean --- map.has(key)
// 删除 --- map.delete(key)
// 遍历map对象 for (let [key, value] of map) { console.log(`${key}: ${value}`); }
// 单独遍历键值对 for (let key/value of map.keys/map.value)
{console.log(`${key}: ${value}`); }
// 清除所有元素 clear
//下面是题解:
let map = new Map();//用哈希表进行数据存储
let res = []; // 先忽略,后面用,定一个数组来承接最后的返回结果
for(let i = 0;i < numbers.length;i++){ // 初始遍历数组
const stem = target - numbers[i]; //定一个常量,时目标值和遍历数的差值,就是要寻找的那个数字
if(map.has(stem)) { // 判断当前map对象中是都有差值对应的键,返回一个布尔值
// 有的话,代表我们找到了那个差值,把他的下标装到res结果数组中,记得要➕1
res.push(map.get(stem) + 1)
res.push(i + 1)
} else {
// 如果没有找到,那就把当前遍历的数字作为key存入map对象中
map.set(numbers[i],i)
}
}
return res;
}
module.exports = {
twoSum: twoSum,
};
#我的求职思考#