leetcode

Solution 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();
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 };