leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE |

commit546dc79fdfe45a4a83af84ef08f25fb857fc0f99
parent1c5c912fcef26b4a5a3b14534dcc94149bd47a20
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateSat, 8 Apr 2023 10:32:40 +0200

Random Problem

Diffstat:
AProblems/0018.cpp|++++++++++++++++++++++++++++++
MREADME.md|+

2 files changed, 31 insertions(+), 0 deletions(-)


diff --git a/Problems/0018.cpp b/Problems/0018.cpp

@@ -0,0 +1,30 @@

class Solution {
public:
vector<vector<int>> fourSum(vector<int> &nums, int target) {
vector<vector<int>> res;
int n = nums.size();
sort(nums.begin(), nums.end());
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
long long goal = (long long)target - nums[i] - nums[j];
int k = j + 1, l = n - 1;
while (k < l) {
long long crnt = nums[k] + nums[l];
if (crnt > goal)
l--;
else if (crnt < goal)
k++;
else {
res.push_back({nums[i], nums[j], nums[k], nums[l]});
k++, l--;
while (k < l && nums[l] == nums[l + 1]) l--;
}
}
while (j + 1 < n && nums[j] == nums[j + 1]) ++j;
}
while (i + 1 < n && nums[i] == nums[i + 1]) ++i;
}
return res;
}
};

diff --git a/README.md b/README.md

@@ -40,6 +40,7 @@ for solving problems.

| 0015 | Medium | [3Sum](Problems/0015.cpp) |
| 0016 | Medium | [3Sum Closest](Problems/0016.cpp) |
| 0017 | Medium | [Letter Combinations of a Phone Number](Problems/0017.cpp) |
| 0018 | Medium | [4Sum](Problems/0018.cpp) |
| 0019 | Medium | [Remove Nth Node From the End of List](Problems/0019.cpp) |
| 0020 | Easy | [Valid Parentheses](Problems/0020.cpp) |
| 0021 | Easy | [Merge Two Sorted Lists](Problems/0021.cpp) |