3Sum LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number[][]}
4
*/
5
var threeSum = function (nums) {
6
nums.sort((a, b) => a - b);
7

8
const ans = [];
9

10
for (let i = 0; i < nums.length - 2; i++) {
11
if (i === 0 || nums[i - 1] !== nums[i]) {
12
let j = i + 1;
13
let k = nums.length - 1;
14
while (j < k) {
15
if (nums[j] + nums[k] === -nums[i]) {
16
ans.push([nums[i], nums[j], nums[k]]);
17
j++;
18
while (j < k && nums[j - 1] === nums[j]) j++;
19
k--;
20
while (k > -1 && nums[k] === nums[k + 1]) k--;
21
} else if (nums[j] + nums[k] < -nums[i]) {
22
j++;
23
} else {
24
k--;
25
}
26
}
27
}
28
}
29

30
return ans;
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0