/** * @param {number[]}nums * @return {number[][]} */ var threeSum = function (nums) { let arr = nums.sort((a, b) => a - b); let zeroIndex = arr.findIndex((e) => e >= 0); let minus = []; let plus = []; minus = arr.slice(0, zeroIndex); plus = arr.slice(zeroIndex + 1, arr.length); if (arr[zeroIndex] === 0) { minus.push(0); } else { plus.unshift(arr[zeroIndex]); } let result = {}; for (let i = 0; i < minus.length; i++) { for (let j = i + 1; j < minus.length; j++) { let add = (minus[i] + minus[j]) * -1; if (plus.indexOf(add) !== -1) { result[`${minus[i]},${minus[j]},${add}`] = true; } } } for (let i = 0; i < plus.length; i++) { for (let j = i + 1; j < plus.length; j++) { let add = (plus[i] + plus[j]) * -1; if (minus.indexOf(add) !== -1) { result[`${add},${plus[i]},${plus[j]}`] = true; } } } returnObject.keys(result).map((item) => item.split(",")); };