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]]