每日一题: 两数之和题目:给定一个整数数组 `nums` 和一个整数目标值 `target`,请你在该数组中找出 和为目标值 `target` 的那 两个 整数,并返回它们的数组下标。数组中只有一对数据满足要求。数组中的数据不能在答案中重复使用。不限制答案中数组下标的顺序。示例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。代码:var twoSum = function(nums, target) { // 键为 配对值 值为下标 let numMap = new Map(); // Map是特殊的键值对结构 雷同对象 let res = new Array(2); for(let index in nums){ let item = nums[index]; if(numMap.has(item)){ res = [numMap.get(item), index]; break; }else { numMap.set(target - item, index); } } return res;};代码解析:- 遍历数组nums,取到每一项的坐标和值。- 如果map中没有该项值,则记录一个键值对到map结构中,键为目标值减当前值,值为当前引用。这样键值对中就记录了遍历过的所有下标和该下标下对应需要的值。- 如果map中存在该值,则说明本项可以与map中值对应的下标项相加构成结果值。- 输出map中对应下标,当前下标即可。运行解析:// [3,2,4] 6循环项: 0 3 map: Map(1) { 3 => '0' }循环项: 1 2 map: Map(2) { 3 => '0', 4 => '1' }循环项: 2 4 map: Map(2) { 3 => '0', 4 => '1' } 结果 [ '1', '2' ]