/**
* @param {number[]} nums
* @return {number[][]}
* [-4,-1,-1,0,1,2]
*/
var threeSum = function (nums) {
const list = []
if (nums.length < 3) return []
nums.sort((a, b) => a - b)
for (let i = 0; i < nums.length; i++) {
if(nums[i] ===nums[i - 1]) {
continue
}
let left = i + 1,
right = nums.length - 1
while (right > left) {
if (right === i) {
right--
} else if (nums[left] + nums[right] + nums[i] === 0) {
list.push([nums[left], nums[right], nums[i]])
while (nums[left] === nums[left + 1]) {
left++
}
left++
while (nums[right] === nums[right + 1]) {
right--
}
right--
} else if (nums[left] + nums[right] + nums[i] < 0) {
left++
} else {
right--
}
}
}
return list
};