var threeSum = function (nums) { const sortNums = nums.sort((a, b) => a - b) const len = sortNums.length const result = [] const obj = {} for (let i = 0; i < len - 2; i++) { let left = i + 1 let right = len - 1 while (left < right) { if (sortNums[i] + sortNums[left] + sortNums[right] > 0) { right = right - 1 } elseif (sortNums[i] + sortNums[left] + sortNums[right] < 0) { left = left + 1 } elseif (sortNums[i] + sortNums[left] + sortNums[right] === 0) { if (!obj[`${sortNums[i]},${sortNums[left]},${sortNums[right]}`]) { result.push([sortNums[i], sortNums[left], sortNums[right]]) obj[`${sortNums[i]},${sortNums[left]},${sortNums[right]}`] = true } left = left + 1 } } } return result }