/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
let res=[]
let len=nums.length
nums=nums.sort((a,b)=>a-b)
for(let i=0;i<len-2;i++){
let j=i+1
let k=len-1
if(i>0&&nums[i]==nums[i-1]){
continue
}
while(j<k){
if(nums[i]+nums[j]+nums[k]>0){
k--
while(nums[k]==nums[k+1]&&j<k){
k--
}
}else if(nums[i]+nums[j]+nums[k]<0){
j++
while(nums[j]==nums[j-1]&&j<k){
j++
}
}else{
res.push([nums[i],nums[j],nums[k]])
j++
k--
while(nums[k]==nums[k+1]&&j<k){
k--
}
while(nums[j]==nums[j-1]&&j<k){
j++
}
}
}
}
return res
};