15 三数之和
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