classSolution: defthreeSum(self, nums: List[int]) -> List[List[int]]: ans = [] nums = sorted(nums) nums_p = [elem for elem in nums if elem > 0] nums_n = [elem for elem in nums if elem < 0] nums_zero = [elem for elem in nums if elem == 0] positive = set(nums_p) negative = set(nums_n) #3 Zero if len(nums_zero) > 2: ans.append([0, 0, 0]) # 1 Zero 1 postive 1 negative if len(nums_zero) > 0: for elem in nums_p: if -elem in negative: ans.append([-elem, 0, elem]) # 2 positive 1 negative for i in range(len(nums_p)-1): for j in range(i+1, len(nums_p)): diff = -nums_p[i] - nums_p[j] if diff in negative: ans.append([diff, nums_p[i], nums_p[j]]) # 2 negative 1 positive for i in range(len(nums_n)-1): for j in range(i+1, len(nums_n)): diff = -nums_n[i] - nums_n[j] if diff in positive: ans.append([nums_n[i], nums_n[j], diff]) return [list(t) for t in set(tuple(_) for _ in ans)]