给定一个包含 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]
]
暴力+剪枝
这题也比较简单,直接暴力+剪枝就能过。
Code
def fourSum(self
, nums
: List
[int], target
: int) -> List
[List
[int]]:
length
, ans
= len(nums
), list()
for i
in range(length
- 3):
for j
in range(i
+ 1, length
- 2):
for k
in range(j
+ 1, length
- 1):
if target
- (nums
[i
] + nums
[j
] + nums
[k
]) in nums
[k
+ 1:]:
tmp
= sorted([nums
[i
], nums
[j
], nums
[k
], target
- (nums
[i
] + nums
[j
] + nums
[k
])])
if tmp
not in ans
:
ans
.append
(tmp
)
return ans
Alex 007
认证博客专家
机器学习
NLP
TensorFlow
我是 Alex 007,一个热爱计算机编程和硬件设计的小白。为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。如果你喜欢我的文章的话,给个三连吧!