vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> res;
sort(nums.begin(), nums.end());
int size = nums.size();
for(int m = 0;m < size;++m){
if(m>0 && nums[m]==nums[m-1]) continue;
int target2 = target-nums[m];
for(int i=m+1;i<size;++i){
if(i>m+1 && nums[i]==nums[i-1]) continue;
int target3 = target2 - nums[i];
int j=i+1,k=size-1;
while(j<k){
if(nums[j] + nums[k] == target3){
res.push_back({nums[m],nums[i],nums[j++],nums[k--]});
while(j<k && nums[j]==nums[j-1]) ++j;
while(j<k && nums[k] == nums[k+1]) --k;
}
else if(nums[j]+nums[k]<target3) ++j;
else --k;
}
}
}
return res;
}
18. 四数之和/C++
最新推荐文章于 2024-11-12 01:30:27 发布