from typing import Set, Tuple
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
nums = sorted(nums)
res = []
prev = None
for i, x in enumerate(nums):
if x <= 0 and x != prev:
three_sum = [[x, y, z] for y, z in self.twoSum(nums[i+1:], -x)]
res += three_sum
prev = x
return res
def twoSum(self, nums: List[int], target: int) -> Set[Tuple[int, int]]:
two_sum = set()
two_sum_checker = set()
for num in nums:
if target - num in two_sum_checker:
two_sum.add((target-num, num))
two_sum_checker.add(num)
return two_sum