class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> result;
vector<int> cur;
int len=nums.size();
if(len<3)
return result;
sort(nums.begin(),nums.end());
int sum=0;
for(int i=0;i<len;++i)
{
while(i>0 && i<len && nums[i] == nums[i-1])
++i;
int index1=i+1;
int index2=len-1;
while(index1<index2)
{
sum=nums[i]+nums[index1]+nums[index2];
if(sum==0)
{
cur.push_back(nums[i]);
cur.push_back(nums[index1]);
cur.push_back(nums[index2]);
result.push_back(cur);
cur.clear();
++index1;
--index2;
while(index1<index2&& nums[index1]==nums[index1-1])
++index1;
while(index1<index2&& nums[index2]==nums[index2+1])
--index2;
}
else if(sum>0)
{
--index2;
while(index1<index2 && nums[index2]==nums[index2+1])
--index2;
}
else
{
++index1;
while(index1<index2 && nums[index1]==nums[index1-1])
++index1;
}
}
}
return result;
}
};
3Sum
最新推荐文章于 2022-01-27 22:44:32 发布