1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int a, b, c, d, aux; vector<vector<int>> ans; if(nums.size() < 4) return ans; sort(nums.begin(), nums.end()); a = 0; b = a + 1; c = b +1; d = nums.size() - 1; for(a = 0; a < nums.size() - 3; ++a) { if(a > 0 && nums[a] == nums[a - 1]) continue; for(b = a + 1; b < nums.size() - 2; ++b) { if(b > a + 1 && nums[b] == nums[b - 1]) continue; c = b + 1; d = nums.size() - 1; while(c < d) { aux = nums[a] + nums[b] + nums[c] + nums[d]; if(aux > target) { --d; } else if(aux < target) ++c; else { ans.push_back(vector<int>{nums[a], nums[b], nums[c], nums[d]}); while(c < d && nums[c] == nums[c + 1]) ++c; while(c < d && nums[d] == nums[d - 1]) --d; ++c;--d; } } } } return ans; } };
|