LeetCode #18 四数之和
2020-02-09 本文已影响0人
HU兔兔
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> ans;
if(nums.size()<4){
return ans;
}
sort(nums.begin(),nums.end());
int i,j,k,l,t;
i=0;
while(i<nums.size()-3){
j=i+1;
while(j<nums.size()-2){
k=j+1;
l=nums.size()-1;
t=target-nums[i]-nums[j];
while(k<l){
if(nums[k]+nums[l]==t){
ans.push_back({nums[i],nums[j],nums[k],nums[l]});
do{
k++;
}while(nums[k-1]==nums[k]&&l>k);
do{
l--;
}while(nums[l+1]==nums[l]&&l>k);
}
else{
if(nums[k]+nums[l]>t){
l--;
}
else{
k++;
}
}
}
do{
j++;
}while(nums[j-1]==nums[j]&&j<nums.size()-2);
}
do{
i++;
}while(nums[i-1]==nums[i]&&i<nums.size()-3);
}
return ans;
}
};