LeetCode-18、四数之和-中等
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
注意:答案中不可以包含重复的四元组。
示例:
给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。
满足要求的四元组集合为:
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]
代码:排序+固定前两个数+双指针
class Solution:
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
nums.sort()
res_t = set()
for i in range(len(nums)-3):
for j in range(i+1, len(nums)-2):
left = j + 1
right = len(nums) -1
while left < right:
tuple4 = (nums[i], nums[j], nums[left], nums[right])
sum4 = sum(tuple4)
if sum4 == target:
left += 1
right -= 1
res_t.add(tuple4)
elif sum4 < target:
left += 1
elif sum4 > target:
right -= 1
res = []
for t in res_t:
res.append(list(t))
return res