#+PROPERTY: STUDY_DECK_02 * TODO 0015. 3Sum :medium: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0015. 3Sum][0015. 3Sum]] :END: 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~. Notice that the solution set must not contain duplicate triplets. *Example 1:* #+begin_src Input: nums = [-1,0,1,2,-1,-4] Output: [[-1,-1,2],[-1,0,1]] Explanation: nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0. nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0. nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0. The distinct triplets are [-1,0,1] and [-1,-1,2]. Notice that the order of the output and the order of the triplets does not matter. #+end_src *Example 2:* #+begin_src Input: nums = [0,1,1] Output: [] Explanation: The only possible triplet does not sum up to 0. #+end_src *Example 3:* #+begin_src Input: nums = [0,0,0] Output: [[0,0,0]] Explanation: The only possible triplet sums up to 0. #+end_src *Constraints:* - ~3 <= nums.length <= 3000~ - ~-10^{5} <= nums[i] <= 10^{5}~ ** TODO Approach Write your approach here. ** TODO Python #+begin_src python class Solution: def threeSum(self, nums: list[int]) -> list[list[int]]: #+end_src ** TODO C++ #+begin_src cpp class Solution { public: vector> threeSum(vector& nums) { } }; #+end_src