写过3Sum之后写4Sum感觉毫无难度
O(n^3)的时间复杂度
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int> > res;
if(nums.size()<=3)return res;
int i,j,left,right;
int a,b,c,d;
sort(nums.begin(),nums.end());
for(i=0;i<nums.size();i++){
for(j=nums.size()-1;j>=i;j--){
a = nums[i];d = nums[j];
left = i+1;
right = j-1;
while(left<right){
b = nums[left];
c = nums[right];
int sum = a + b + c + d;
if(sum == target){
vector<int> elem;
elem.push_back(a);
elem.push_back(b);
elem.push_back(c);
elem.push_back(d);
//cout<<"input"<<' '<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
res.push_back(elem);
--right;
++left;
}else{
if(sum>target){
--right;
}else{
++left;
}
}
}
}
}
sort(res.begin(),res.end());
vector<vector<int> >::iterator iter = unique(res.begin(),res.end());
res.erase(iter,res.end());
return res;
}