Skip to content

Commit ce6ae8e

Browse files
committed
Add solution #15
1 parent db9387b commit ce6ae8e

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

solutions/0015-3sum.js

+14-9
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
* https://leetcode.com/problems/3sum/
44
* Difficulty: Medium
55
*
6-
* Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j,
7-
* i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.
6+
* Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]]
7+
* such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.
88
*
99
* Notice that the solution set must not contain duplicate triplets.
1010
*/
@@ -14,25 +14,30 @@
1414
* @return {number[][]}
1515
*/
1616
var threeSum = function(nums) {
17-
const result = new Set();
18-
17+
const result = [];
1918
nums.sort((a, b) => a - b);
2019

2120
for (let i = 0; i < nums.length - 2; i++) {
21+
if (i > 0 && nums[i] === nums[i - 1]) continue;
2222
let j = i + 1;
2323
let k = nums.length - 1;
24-
2524
while (j < k) {
2625
const sum = nums[i] + nums[j] + nums[k];
2726
if (!sum) {
28-
result.add(JSON.stringify([nums[i], nums[j++], nums[k--]]));
29-
} else if (sum > 0) {
27+
result.push([nums[i], nums[j], nums[k]]);
28+
j++;
3029
k--;
30+
while (j < k && nums[j] === nums[j - 1]) {
31+
j++;
32+
}
33+
while (j < k && nums[k] === nums[k + 1]) {
34+
k--;
35+
}
3136
} else {
32-
j++;
37+
sum < 0 ? j++ : k--;
3338
}
3439
}
3540
}
3641

37-
return [...result].map(JSON.parse);
42+
return result;
3843
};

0 commit comments

Comments
 (0)