leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0018.cpp (1108B)
0 class Solution { 1 public: 2 vector<vector<int>> fourSum(vector<int> &nums, int target) { 3 vector<vector<int>> res; 4 int n = nums.size(); 5 6 sort(nums.begin(), nums.end()); 7 for (int i = 0; i < n; i++) { 8 for (int j = i + 1; j < n; j++) { 9 long long goal = (long long)target - nums[i] - nums[j]; 10 int k = j + 1, l = n - 1; 11 while (k < l) { 12 long long crnt = nums[k] + nums[l]; 13 if (crnt > goal) 14 l--; 15 else if (crnt < goal) 16 k++; 17 else { 18 res.push_back({nums[i], nums[j], nums[k], nums[l]}); 19 k++, l--; 20 while (k < l && nums[l] == nums[l + 1]) 21 l--; 22 } 23 } 24 while (j + 1 < n && nums[j] == nums[j + 1]) 25 ++j; 26 } 27 while (i + 1 < n && nums[i] == nums[i + 1]) 28 ++i; 29 } 30 return res; 31 } 32 };