两数之和
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum
# 方法一:暴力破解
var twoSum = function(nums, target) {
for(let i = 0; i < nums.length; i++) {
let nextI = i + 1;
while(nextI < nums.length) {
if (nums[i] + nums[nextI] == target) {
return [i, nextI];
}
nextI++;
}
}
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 方法二: 补位
借助map字典,存储每个数组的补位数字。例: nums = [2,7,4,1,8], target = 9; 第一次循环2,找出补位数7(9-2),判断map中没有7,没有答案。将该元素存入map中 第二次循环7,找出补位数2(9-7),判断map中有2,找到答案,返回结果。
var twoSum = function(nums, target) {
let map = {};
let index = 0;
while(index < nums.length) {
let diff = target - nums[index];
if(map[diff] != undefined){
return [map[diff], index];
}
map[nums[index]] = index;
index++;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2025/09/05, 8:09:00