From 9c470bd0554bab9fcee25a92da4faa1619e6b426 Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Wed, 19 Feb 2025 00:50:15 +0800 Subject: [PATCH] feat: 15_3sum --- 15_3sum/main.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 15_3sum/main.cpp 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; + } +};