def fourSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[List[int]] """ if not nums and len(nums) < 4: return []
nums.sort() result = []
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 remaining = target - nums[i] - nums[j] while left < right: total = nums[left] + nums[right] if total == remaining: result.append([nums[i], nums[j], nums[left], nums[right]]) while left < right and nums[left] == nums[left + 1]: left += 1 while left < right and nums[right] == nums[right - 1]: right -= 1 left += 1 right -= 1 elif total < remaining: left += 1 else: right -= 1 return result