s0018
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-11-04 16:35:55 +08:00
parent 47099028a2
commit 1de1398897
3 changed files with 61 additions and 0 deletions

28
src/s0018_4sum.cpp Normal file
View File

@@ -0,0 +1,28 @@
#include "s0018_4sum.hpp"
vector<vector<int>> Solution::fourSum(vector<int>& nums, int target) {
int len = nums.size();
if (len < 4) {
return {};
}
vector<vector<int>> result{};
sort(nums.begin(), nums.end());
for (int i{1}; i < len - 2; i++) {
for (int j = len - 2; j > i; j--) {
for (int x{0}, y = len - 1; x < i && y > j;) {
if (nums[x] + nums[y] + nums[i] + nums[j] > target) {
y--;
} else if (nums[x] + nums[y] + nums[i] + nums[j] < target) {
x++;
} else {
vector<int> v = {nums[x], nums[i], nums[j], nums[y]};
if (std::find(result.begin(), result.end(), v) == result.end()) {
result.push_back(v);
}
x++;
}
}
}
}
return result;
}