Skip to content

Commit 40df8b6

Browse files
committed
leetcode 15
1 parent 2e5010d commit 40df8b6

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

leetcode/15.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
3+
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
4+
5+
Note:
6+
7+
The solution set must not contain duplicate triplets.
8+
9+
Example:
10+
11+
Given array nums = [-1, 0, 1, 2, -1, -4],
12+
13+
A solution set is:
14+
[
15+
[-1, 0, 1],
16+
[-1, -1, 2]
17+
]
18+
19+
*/
20+
21+
/**
22+
* @param {number[]} nums
23+
* @return {number[][]}
24+
*/
25+
var threeSum = function(nums) {
26+
const res = [];
27+
if (nums.length < 3) {
28+
return res;
29+
}
30+
31+
nums = nums.sort((a, b) => a - b);
32+
33+
for (let i = 0; i < nums.length - 2; i++) {
34+
if (nums[i] > 0) {
35+
return res;
36+
}
37+
if (i > 0 && nums[i] == nums[i - 1]) {
38+
continue;
39+
}
40+
for (let j = i + 1, k = nums.length - 1; j < k; ) {
41+
if (nums[i] + nums[j] + nums[k] === 0) {
42+
res.push([nums[i], nums[j], nums[k]]);
43+
j++;
44+
k--;
45+
while (j < k && nums[j] == nums[j - 1]) {
46+
j++;
47+
}
48+
while (j < k && nums[k] == nums[k + 1]) {
49+
k--;
50+
}
51+
} else if (nums[i] + nums[j] + nums[k] > 0) {
52+
k--;
53+
} else {
54+
j++;
55+
}
56+
}
57+
}
58+
return res;
59+
};

0 commit comments

Comments
 (0)