就是O(N3)。。。的复杂度,
注意去除重复
class Solution {
public:
vector< vector<int> > fourSum(vector<int>& nums, int target)
{
int n,i,j,left,right,k;
vector< vector<int> >res;
sort(nums.begin(),nums.end());
vector<int> num(4);
n=nums.size();
for(i=0;i<n;i++)
{
num[0]=nums[i];
for(j=i+1;j<n;j++ )
{
num[1]=nums[j];
left=j+1;
right=n-1;
while(left<right)
{
num[2]=nums[left];
num[3]=nums[right];
if(num[0]+num[1]+num[2]+num[3]>target)
right--;
else if(num[0]+num[1]+num[2]+num[3]<target)
left++;
else
{
res.push_back(num);
for(k=0;k<4;k++)
printf("%d ",num[k]);
cout<<endl;
while(left+1<n&&nums[left]==nums[++left]);
while(right-1>=0&&nums[right]==nums[--right]);
}
}
while(j+1<n&&nums[j]==nums[j+1])
j++;
}
while(i+1<n&&nums[i]==nums[i+1])
i++;
}
return res;
}
};