diff --git a/15_3sum/main.cpp b/15_3sum/main.cpp new file mode 100644 index 0000000..d31ee0b --- /dev/null +++ b/15_3sum/main.cpp @@ -0,0 +1,33 @@ +#include +using namespace std; + +class Solution { + public: + vector> threeSum(vector &nums) { + set> st; + + sort(nums.begin(), nums.end()); + + for (int i = 0; i < nums.size(); i++) { + int target = -nums[i]; + int l = i + 1, r = nums.size() - 1; + + while (l < r) { + if (nums[l] + nums[r] < target) { + l++; + } else if (nums[l] + nums[r] > target) { + r--; + } else { + st.insert({nums[i], nums[l], nums[r]}); + l++; + } + } + } + + vector> result; + for (auto &v : st) { + result.push_back(v); + } + return result; + } +};