static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int> > result;
if (nums.size() < 4)
return result;
sort(nums.begin(), nums.end());
int a, b, c, d;
int size = nums.size();
for (a = 0; a < size; a++){//固定住第一个数
// if (target > 0 && nums[a] > target)
// return result;
for (b = a + 1; b < size; b++){//固定住第二个数
c = b + 1;
d = nums.size() - 1;
while(c < d){
int cnt = nums[a] + nums[b] + nums[c] + nums[d];
if (cnt == target){
result.push_back({nums[a], nums[b], nums[c], nums[d]});
c++,d--;
while(d > c && nums[d] == nums[d + 1]) d--;
while(c < d && nums[c] == nums[c - 1]) c++;
}else if (cnt < target)
c++;
else
d--;
}
while(b < size && nums[b] == nums[b + 1]) b++;
}
while(a < size && nums[a] == nums[a + 1]) a++;
}
return result;
}
};
LetCode 18. 四数之和
最新推荐文章于 2021-12-11 23:37:49 发布