1.1 暴力解法
for(let i = 0;i<nums.length;i++){
for(let j = i+1;j<nums.length;j++){
if(nums[i] + nums[j] == target){
return [i,j];
}
}
}
1.2 哈希(Map)
| – | – |
|---|---|
| map.clear () | 清除所有的键值对 |
| map.delete (key) | 移除该元素 |
| map.get(key) | 返回对应的value |
| map.has(key) | 是否包含对应的值 |
| map.set(key,value) | 设置对应的键值 |
1.2.1 代码块
const map = new Map();
// 遍历数组
for(let i = 0;i<nums.length;i++){
const complent = target -nums[i]
if(map.has(complent)){
return [map.get(complent),i];
}
else{
map.set((nums[i]),i);
}
}
return [];
本文介绍了求解数组中两数之和的经典算法问题。首先给出了一种暴力解法,通过双重循环查找符合条件的两个数;其次介绍了一种更高效的哈希表方法,利用 Map 数据结构来存储已遍历过的数值及其索引,从而将时间复杂度从 O(n^2) 降低到 O(n),显著提高了查找效率。
1673

被折叠的 条评论
为什么被折叠?



