1.暴力枚举
//方法一 双循环
var twoSum = function(nums, target) {
// var nums = [];
// var target = 0;
// var res = [];
let res = new Array()
for(var i = 0; i < nums.length - 1;i++){
for(var j = i+1; j < nums.length;j++){
if(nums[i]+nums[j] === target){
// return i,j;
res.push(i,j)
return res;
}
}
}
};
时间复杂度O(n²)
空间复杂度O(1)
2.动态哈希
//方法二 map
var twoSum = function(nums, target) {
let arrs = new Map()
for(let i = 0; i < nums.length -1;i++){
if(arrs.has(target - nums[i])){
return([arrs.get(target - nums[i]),i])
}
arrs.set(nums[i],i)
}
};
// let arrs = new Map()
// arrs.has 判断是否含有目标键
// arrs.get 获取目标键的键值
// arrs.set 给map中添加该键值
时间复杂度O(N): O(N), 其中 N 是数组中的元素数量。对于每一个元素 x,我们可以 O(1) 地寻找 target - x。
空间复杂度O(N):, 其中 N 是数组中的元素数量。主要为哈希表的开销。