class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
vector<int> set;
vector<vector<int> > res;
if(nums.size()<4)
return res;
int a,b,c,d;
a=0;
d=nums.size()-1;
for(a=0;a<nums.size()-3;a++)
{
if(a>0&&nums[a]==nums[a-1])
continue;
for(d=nums.size()-1;d>a+2;d--)
{
if(d<nums.size()-1&&nums[d]==nums[d+1])
continue;
b=a+1;
c=d-1;
while(b<c)
{
int sum=nums[a]+nums[b]+nums[c]+nums[d];
if(sum<target)
{
b++;
continue;
}
else if(sum>target)
{
c--;
continue;
}
else
{
set.push_back(nums[a]);
set.push_back(nums[b]);
set.push_back(nums[c]);
set.push_back(nums[d]);
/*for(int i=0;i<3;i++)
for(int j=i+1;j<4;j++)
if(set[i]>set[j])
{
int temp=set[i];
set[i]=set[j];
set[j]=temp;
}*/
res.push_back(set);
set.clear();
b++;
}
while(nums[b]==nums[b-1])
b++;
}
}
}
return res;
}
};
leetcode 18: 4Sum
最新推荐文章于 2019-08-03 17:11:38 发布