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