https://leetcode.com/problems/3sum/#/description
class Solution(object):
def match(self, nums, ind0):
ind1=ind0+1
ind2=len(nums)-1
res=[]
while ind1<len(nums)-1 and ind2>ind1:
if nums[ind1]+nums[ind2]>-nums[ind0]:
ind2-=1
else:
if nums[ind1]+nums[ind2]==-nums[ind0]:
res.append([nums[ind0],nums[ind1],nums[ind2]])
while ind1<len(nums)-1 and nums[ind1]==nums[ind1+1]: ind1+=1
ind1+=1
return res
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums)<3: return []
nums.sort()
ind0=0
res=[]
while ind0<len(nums)-2:
res+=self.match(nums, ind0)
while ind0<len(nums)-1 and nums[ind0]==nums[ind0+1]: ind0+=1
ind0+=1
return res