4Sum
Problem
Solution
class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
soln = []
nums = sorted(nums)
for i in range(len(nums)-3):
if i!=0 and nums[i] == nums[i-1]:
continue
for j in range(i+1, len(nums)-2):
if j != i+1 and nums[j] == nums[j-1]:
continue
left = j+1
right = len(nums)-1
while left < right:
currentSum = nums[i]+nums[j]+nums[left]+nums[right]
if currentSum < target:
left+=1
elif currentSum > target:
right-=1
else:
soln.append([nums[i], nums[j], nums[left], nums[right]])
left+=1
right-=1
while left < right and nums[left] == nums[left-1]:
left+=1
while left < right and nums[right] == nums[right+1]:
right-=1
return soln
#Time: O(n^3)
#Space: O(1)Last updated