class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target)
{
int size=nums.size();
vector<vector<int>> result;
vector<int> cur;
if(size<4)
return result;
sort(nums.begin(),nums.end());
for(int i=0;i<=size-4;++i)
{
while(i<=size-4&& i>0 && nums[i]==nums[i-1])
++i;
for(int j=i+1;j<=size-3;++j)
{
while(j<=size-3&&j>i+1 && nums[j]==nums[j-1])
++j;
int index1=j+1;
int index2=size-1;
while(index1<index2)
{
int sum=nums[i]+nums[j]+nums[index1]+nums[index2];
if(sum==target)
{
cur.push_back(nums[i]);
cur.push_back(nums[j]);
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>target)
{
--index2;
while(index1<index2 && nums[index2]==nums[index2+1])
--index2;
}
else
{
++index1;
while(index1<index2 && nums[index1]==nums[index1-1])
++index1;
}
}
}
}
return result;
}
};
4Sum

最新推荐文章于 2021-08-20 00:33:10 发布
