遍历
* @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);
复制代码