from collections import defaultdict
class Solution:
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
nums.sort()
d=defaultdict(int)
s=defaultdict(int)
solution=[]
for x in nums:
d[x]+=1
for i,first in enumerate(nums):
d[first]-=1
if first >0:
break
if i>0 and nums[i] == nums[i-1]:
continue
for j,second in enumerate(nums[i+1:]):#range(i+1,len(nums)):
if -first-second == second:
if d[-first-second]-1 > 0 and -first-second >= second:
if s[first,second]==0:
solution.append([first,second,-first-second])
s[first,second]+=1
if -first-second != second:
if d[-first-second] > 0 and -first-second >= second:
if s[first,second]==0:
solution.append([first,second,-first-second])
s[first,second]+=1
return solution