
本期知识点导图

1. 上期参考代码
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int n = nums.size();
vector<vector<int>> ret{};
for (int i = 0; i < n;) {
for (int j = i + 1; j < n;) {
int left = j + 1;
int right = n - 1;
long long aim = (long long)target - nums[i] - nums[j];
while (left < right) {
int sum = nums[left] + nums[right];
if (sum < aim) left++;
else if (sum > aim) right--;
else {
ret.({nums[i], nums[j], nums[left++], nums[right--]});
(left < right && nums[left] == nums[left - ]) left++;
(left < right && nums[right] == nums[right + ]) right--;
}
}
j++;
(j < n && nums[j - ] == nums[j]) j++;
}
i++;
(i < n && nums[i - ] == nums[i]) i++;
}
ret;
}
};