-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsolution.js
46 lines (38 loc) · 1.01 KB
/
solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var threeSum = function(nums) {
nums.sort((a, b) => a - b);
var len = nums.length;
if(len < 3) {
return [];
}
if(nums[len - 1] === 0 && nums[len - 2] === 0 && nums[len-3] === 0) {
return [[0,0,0]];
}
if(nums[0] < 0 && nums[len - 1] <=0) {
return [];
}
var results = [];
var record = new Map();
for(var i = 0; i < nums.length - 2; i++) {
var a = nums[i];
var begin = i + 1;
var end = nums.length - 1;
while(begin < end) {
var b = nums[begin];
var c = nums[end];
var sum = a + b + c;
if(sum === 0) {
var s = a + ',' + b + ',' + c;
record.set(s, 1);
end--;
} else if(sum > 0) {
end--;
} else {
begin++;
}
}
}
for(let [index, value] of record) {
results.push(index.split(','));
}
return results;
};