From 7e370027c3f9e1ee01c2694f2f64272b5b7aeb09 Mon Sep 17 00:00:00 2001 From: AJAY <74255983+ajayTemp@users.noreply.github.com> Date: Sat, 21 Oct 2023 14:20:30 +0530 Subject: [PATCH] Create 3sum.cpp --- C++/3sum.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 C++/3sum.cpp diff --git a/C++/3sum.cpp b/C++/3sum.cpp new file mode 100644 index 0000000..37e20e4 --- /dev/null +++ b/C++/3sum.cpp @@ -0,0 +1,43 @@ +class Solution { +public: + vector > threeSum(vector &num) { + + vector > res; + + std::sort(num.begin(), num.end()); + + for (int i = 0; i < num.size(); i++) { + + int target = -num[i]; + int front = i + 1; + int back = num.size() - 1; + + while (front < back) { + + int sum = num[front] + num[back]; + + if (sum < target) + front++; + + else if (sum > target) + back--; + + else { + vector triplet = {num[i], num[front], num[back]}; + res.push_back(triplet); + + while (front < back && num[front] == triplet[1]) front++; + + while (front < back && num[back] == triplet[2]) back--; + } + + } + + while (i + 1 < num.size() && num[i + 1] == num[i]) + i++; + } + + return res; + + } +};