Problem
LeetCode 15. 3Sum — JavaScript.
Solution
const threeSum = numsArray => {
"use strict";
const nums = Int32Array.from(numsArray).sort();
const results = [];
const LAST = nums.length - 1;
let i = 0;
do {
const n = nums[i];
if (n === nums[i-1]) continue;
let l = i + 1;
let r = LAST;
const isPossible = (n + nums[l] + nums[l+1] <= 0);
if (!isPossible) break;
do {
const ln = nums[l];
const rn = nums[r];
const testSum = n + ln + rn;
if (testSum === 0) {
results.push([n, ln, rn]);
// Increment l; decrement r.
// To avoid duplicate triplets,
// repeat until unique values appear.
// E.g. [-10, 2, 3, 3, 7, 8]
// [[-10, 2, 8] [-10, 3, 7]] NOT 2nd [-10, 3, 7]
while (ln === nums[++l]);
while (rn === nums[--r]);
} else if (testSum < 0) {
l++;
} else {
r--;
}
} while (l < r);
} while (++i < LAST)
return results;
};
Code language: JavaScript (javascript)
Interactive Web Demo in JavaScript
https://mybanned.com//wp-content/uploads/2023/01/3sum.html
Video
![](https://mybanned.com/wp-content/uploads/2024/05/Screenshot-2024-05-18-at-1.51.51-PM-1024x1024.png)