仅仅是记录一下
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
vector<vector<int>> result;
int length = nums.size();
for(int i = 0; i < length - 3; ) {
int firstTarget = target - nums[i];
for(int j = i + 1; j < length - 2; ) {
int secondTarget = firstTarget - nums[j];
int m = j + 1;
int n = length - 1;
while(m < n) {
if(nums[m] + nums[n] == secondTarget) {
vector<int> tmp;
tmp.push_back(nums[i]); tmp.push_back(nums[j]); tmp.push_back(nums[m]); tmp.push_back(nums[n]);
result.push_back(tmp);
m++;
while(m < n && nums[m] == nums[m - 1]) m++;
n--;
while(m < n && nums[n] == nums[n + 1]) n--;
}
if(nums[m] + nums[n] < secondTarget) {
m++;
//while(m < n && nums[m] == nums[m - 1]) m++;
}
if(nums[m] + nums[n] > secondTarget) {
n--;
//while(m < n && nums[n] == nums[n + 1]) n--;
}
}
j++;
while(j < length - 2 && nums[j] == nums[j - 1]) j++;
}
i++;
while(i < length - 3 && nums[i] == nums[i - 1]) i++;
}
return result;
}
};