var threeSum = function(nums) {
let len =nums.length;
if(len<3) return [];
const res=[];
nums.sort((a,b) => a - b);
for(let i =0;i<len-2;i++)
{
if(nums[i]>0) break;
if(i>0 && nums[i]==nums[i-1]) continue;
let left = i+1;
let right = len-1;
while(left<right)
{
if(nums[i]+nums[left]+nums[right]>0) {right–;continue;}
if(nums[i]+nums[left]+nums[right]<0) {left++;continue;}
res.push([nums[i],nums[left],nums[right]]);
while(left<right &&nums[left]==nums[++left]);
while(left<right && nums[right]==nums[–right]);
}
}
return res;
};
- 注意事项
- 三数之和是遍历最小的数字,然后移动left,right
- 注意去重
- sort排序中a-b 是从小到大
- res.push[]