var threeSum = function(nums) {
let ans = []
let len = nums.length
if(nums == null || len<3)return ans
nums.sort((a,b)=>a-b)
for(i=0;i<len;i++){
if(nums[0]>0) break
if(i>0 && nums[i] == nums[i-1])continue
let L = i+1
let R = len-1
while(L<R){
let sum = nums[i]+nums[L]+nums[R]
if(sum == 0){
ans.push([nums[i],nums[L],nums[R]])
while(L<R && nums[L] == nums[L+1]) L++
while(L<R && nums[R] == nums[R-1]) R--
L++
R--
}
else if(sum<0) L++
else if(sum>0) R--
}
}
return ans
}
主要是利用一个数来固定好
之后通过双指针来寻找sum等于0的三个数
双指针不断移动,移动之后进行数组中下一个数固定
注意要去重复还有就是push的类型