/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
nums.sort((a,b)=>a-b);
let result=[];
for(let i=0;i<nums.length-2;i++){
if(nums[i]>0) return result;//因为求三数之和等于0,如果第一个数已经大于0,后面肯定无解
if(i>0&&nums[i]==nums[i-1]) continue;
let left=i+1;
let right=nums.length-1;
while(left<right){
if(nums[i]+nums[left]+nums[right]==0){
result.push([nums[i],nums[left],nums[right]]);
left++;
right--;
}else{
nums[i]+nums[left]+nums[right]>0?right--:left++;
}
while(left>i+1&&nums[left]==nums[left-1]) left++;
while(right<nums.length-1&&nums[right]==nums[right+1]) right--;
}
}
return result;
};
【leetcode】三数之和 双指针
最新推荐文章于 2024-07-22 16:27:42 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)