遍历
* @param {number[]} nums* @param {number} target* @return {number[]}*/// var twoSum = function(nums, target) {// let final = [];// for(let i = 0; i < nums.length; i++){// for(let j = i + 1; j < nums.length; j++){// let sum = nums[i] + nums[j];// if(sum === target){// final.push(i, j);// }// }// }// return final;// };// twoSum([2, 7, 11, 15], 9) 复制代码
完整hash表
- 此处存在如果相同的key存在,使用map后者覆盖前者的情况,因此全部推入,最后做去重处理
var twoSum = function(nums, target){ let map = new Map(); let final = []; for(let i = 0; i < nums.length; i++){ map.set(nums[i], i); } for(let i = 0; i < nums.length; i++){ let complement = target - nums[i]; if(map.has(complement) && map.get(complement) !== i){ final.push(i, map.get(complement)) } } return [...new Set(final)];}twoSum([3,3], 6); 复制代码
单向hash表
// var twoSum = (nums, target) => {// let final = [];// let map = new Map();// for(let i = 0; i < nums.length; i++){// let complement = target - nums[i];// if(map.has(complement)){// final.push(map.get(complement));// final.push(i);// }// map.set(nums[i], i);// }// return final;// }// twoSum([2, 7, 11, 15], 9);复制代码