Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5c411e7

Browse files
committed
feat: 三数之和
1 parent ba6c0cb commit 5c411e7

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

三数之和.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*/
5+
var twoSum = function(nums, target) {
6+
let map = new Map()
7+
var results = []
8+
for (let i = 0; i < nums.length; i++) {
9+
let num = nums[i]
10+
let result = map.get(target - num)
11+
if (result !== undefined) {
12+
results.push([nums[result], num])
13+
}
14+
map.set(num, i)
15+
}
16+
return results
17+
}
18+
19+
var threeSum = function(nums) {
20+
nums.sort((a, b) => a - b)
21+
var set = new Set()
22+
var results = []
23+
for (var i = 0; i < nums.length - 2; i++) {
24+
let find = twoSum(nums.slice(i + 1), -nums[i])
25+
if (find) {
26+
find.forEach((arr) => {
27+
if (!set.has(arr.join(''))) {
28+
results.push([nums[i], ...arr])
29+
}
30+
set.add(arr.join(''))
31+
})
32+
}
33+
}
34+
return results
35+
}
36+
37+
console.log(threeSum([-1,0,1,2,-1,-4]))
38+
39+
/**
40+
* 利用两数之和的变形来求解,循环判断第三个数的负数是否能和另外两个数相加得到。
41+
*/

0 commit comments

Comments
 (0)