题目地址:https://leetcode-cn.com/problems/4sum/
解题思路:和之前三数求和类似,只不过多了层循环。
class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); vector<vector<int>> ans; int a, b, c, d; int len = nums.size(); if (len < 4) return ans; for (a = 0; a < len; a++) { if (a > 0 && nums[a] == nums[a - 1]) continue; for (b = a + 1; b < len; b++) { if (b > a + 1 && nums[b] == nums[b - 1]) continue; c = b + 1; d = len - 1; while (c < d) { if (c > b + 1 && nums[c] == nums[c - 1]) { c++; continue; } while (c < d&&nums[a] + nums[b] + nums[c] + nums[d] > target) d--; while (c < d&&nums[a] + nums[b] + nums[c] + nums[d] < target) c++; if (c < d&& nums[a] + nums[b] + nums[c] + nums[d] == target) { ans.push_back({ nums[a],nums[b], nums[c], nums[d] }); c++; } } } } return ans; } };