class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int len = nums.size(); sort(nums.begin(), nums.end()); vector<vector<int>> res; for (int a = 0; a < len; ++a) { if (a && nums[a] == nums[a - 1])continue; for (int b = a + 1; b < len - 2; ++b) { if (b > a + 1 && nums[b] == nums[b - 1])continue; int i = b + 1, j = len - 1; while (i < j) { int sum = target - (nums[a] + nums[b]); if (nums[i] + nums[j] < sum)++i; else if (nums[i] + nums[j] > sum)--j; else { res.push_back({nums[a], nums[b], nums[i++], nums[j--]}); while (i < j && nums[i] == nums[i - 1])++i; while (i < j && nums[j] == nums[j + 1])--j; } } } } return res; } };