From 6b470e61fb4b89c370e594ea97285aef08ecc976 Mon Sep 17 00:00:00 2001 From: Vimal Anand <78069624+Vimal2023@users.noreply.github.com> Date: Wed, 18 Oct 2023 20:27:21 +0530 Subject: [PATCH] Create 3sum-leetcode.cpp Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. --- 03-Arrays/3sum-leetcode.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 03-Arrays/3sum-leetcode.cpp diff --git a/03-Arrays/3sum-leetcode.cpp b/03-Arrays/3sum-leetcode.cpp new file mode 100644 index 0000000..3cc3ff6 --- /dev/null +++ b/03-Arrays/3sum-leetcode.cpp @@ -0,0 +1,29 @@ +//Optimized Approach - O(n^2 logn + nlogn) - o(n^2 logn) time and O(n) space +class Solution { +public: + vector> threeSum(vector& nums) { + int target = 0; + sort(nums.begin(), nums.end()); + set> s; + vector> output; + for (int i = 0; i < nums.size(); i++){ + int j = i + 1; + int k = nums.size() - 1; + while (j < k) { + int sum = nums[i] + nums[j] + nums[k]; + if (sum == target) { + s.insert({nums[i], nums[j], nums[k]}); + j++; + k--; + } else if (sum < target) { + j++; + } else { + k--; + } + } + } + for(auto triplets : s) + output.push_back(triplets); + return output; + } +};