https://leetcode.com/problems/two-sum/

第一遍提交本来判断两个数字相加小于target,数字应该比target小,忽略了负数导致wr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
const twoSum = (nums, target) => {
const len = nums.length;
for (let i = 0; i < len; i++) {
if (nums[i] <= target) {
for (let j = i + 1; j < len; j++) {
if (nums[j] <= target && nums[i] + nums[j] === target) {
return [i, j];
}
}
}
}
};

第二遍ac,brute force

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
const twoSum = (nums, target) => {
const len = nums.length;
for (let i = 0; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (nums[i] + nums[j] === target) {
return [i, j];
}
}
}
};

大佬答案:

1
2
3
4
5
6
7
8
9
10
const twoSum = (nums, target) => {
const map = {};
for (let i = 0; i < nums.length; i++) {
const val = target - nums[i];
if (map[val] !== undefined) {
return [map[val], i];
}
map[nums[i]] = i;
}
};

在判断数大小的时候最好用减法,两个数字相加可能超出数字范围,get.