双指针
Python
最朴素版本代码!
class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
res = []
if len(nums) < 4:
return res
n = len(nums)
nums.sort()
for a in range(n-3):
if a > 0 and nums[a] == nums[a-1]: continue
for b in range(a+1, n-2):
if b > a + 1 and nums[b] == nums[b-1]: continue
c, d = b+1, n-1
while c < d:
if nums[c] + nums[d] < target - nums[a] - nums[b]:
c += 1
elif nums[c] + nums[d] > target - nums[a] - nums[b]:
d -= 1
else:
res.append([nums[a], nums[b], nums[c], nums[d]])
c += 1
d -= 1
while c < d and nums[c] == nums[c-1]:
c += 1
while c < d and nums[d] == nums[d+1]:
d -= 1
return res