链接:18. 四数之和 - 力扣(LeetCode)
题解:
本题和三数之和基本一样,参见双指针7:LCR 007. 三数之和-CSDN博客
class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> ans;sort(nums.begin(), nums.end());//升序排序nums数组int n = nums.size();for (int i = 0; i < n - 3; i++){if (i > 0 && nums[i] == nums[i - 1]) continue;//去重for (int j = i + 1; j < n - 2; j++){if (j > i + 1 && nums[j] == nums[j - 1]) continue;//去重int left = j + 1;int right = n - 1;while (left < right){long long sum=(long long)nums[i] + nums[j] + nums[left] + nums[right];if (sum > target) right--;else if (sum < target) left++;else{ans.push_back({ nums[i],nums[j],nums[left],nums[right] });while (left < right && nums[left] == nums[left + 1]) left++;//去重while (left < right && nums[right] == nums[right - 1]) right--;//去重left++;right--;}}}}return ans;}
};