class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> threeSum(vector<int>& nums) {
sort(nums.begin(),nums.end());
//规定一个顺序,三元组的下标顺序必须是递增的
int n=nums.size();
for(int i=0;i<n;i++)//枚举nums[i],当nums[i]确定时,两数之和为-nums[i]
{
if(i&&nums[i]==nums[i-1]) continue;
for(int l=i+1,r=n-1;l<r;l++){//枚举每一个nums[j]
if(l>i+1&&nums[l]==nums[l-1]) continue;
while(r>l&&nums[l]+nums[r]+nums[i]>0) r--;
if(r>l&&nums[l]+nums[r]+nums[i]==0)
res.push_back({nums[i],nums[l],nums[r]});
}
}
return res;
}
};
LeetCode 15. 三数之和
最新推荐文章于 2024-08-10 22:52:22 发布