JSFiddle - React, Tailwind, and code Playground
JavaScript
const get3Sum = (arr) => {
const results = [];
arr.sort((a, b) => a - b);
for (let i = 0; (i < arr.length - 2) && (arr[i] <= 0); i++) {
if (i === 0 || arr[i] !== arr[i - 1]) {
getPair(arr, i, results);
}
}
return results;
};
const getPair = (arr, i, results) => {
let left = i + 1;
let right = arr.length - 1;
while (left < right) {
const sum = arr[i] + arr[left] + arr[right];
if (sum === 0) {
results.push([arr[i], arr[left++], arr[right--]]);
while (arr[left - 1] == arr[left]) {
left++;
}
} else if (sum < 0) {
left++;
} else if (sum > 0) {
right--;
}
}
};
console.log(get3Sum([-1, 0, 1, 2, -1, -4]));