JSFiddle - React, Tailwind, and code Playground
by Steven Senkus
JavaScript
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
function removeDuplicateSolutions(solutionArrays) {
solutionArrays = solutionArrays.map((arr) => {
return arr.sort((a, b) => {
return a - b
});
})
let finalSolutionsArray = [];
if (solutionArrays.length === 1) {
return solutionArrays;
} else {
finalSolutionsArray.push(solutionArrays[0])
}
for (let i = 1; i < solutionArrays.length; i++) {
let solutionArray = solutionArrays[i];
for (let j = i + 1; j < solutionArrays.length; j++) {
let compareArray = solutionArrays[j];
if (!(solutionArray[0] === compareArray[0] &&
solutionArray[1] === compareArray[1] &&
solutionArray[2] === compareArray[2])) {
finalSolutionsArray.push(solutionArray);
}
}
}
return finalSolutionsArray;
}
if (nums.length <= 2) {
return [];
}
let zeroSumArrays = [];
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
for (let k = j + 1; k < nums.length; k++) {
console.log(nums[i], nums[j], nums[k]);
if (nums[i] + nums[j] + nums[k] === 0) {
zeroSumArrays.push([nums[i], nums[j], nums[k]]);
}
}
}
}
if (zeroSumArrays.length === 0) return [];
return removeDuplicateSolutions(zeroSumArrays);
};
/* console.log('threeSum', threeSum([-1, 0, 1, 2, -1, -4]))
console.log('threeSum', threeSum([0, 0, 0, 0])) */
console.log('threeSum', threeSum([0, 1, 1]))
console.log('threeSum', threeSum([-2,0,1,1,2])) // [[-2,0,2],[-2,1,1]]