"""
給定乙個包含n個整數的陣列nums和乙個目標值target,判斷nums中是否存在四個元素 a,b,c和d
使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。
"""def
foursum
(nums, target)
: n =
len(nums)
if n<4:
return
nums.sort(
) res =
for i in
range
(n-3):
if i >
0and nums[i]
==nums[i-1]
:continue
if nums[i]
+ nums[i+1]
+nums[i+2]
+ nums[i+3]
> target:
break
if nums[i]
+ nums[i-1]
+ nums[i-2]
+ nums[i-3]
< target:
continue
for j in
range
(i+1
, n-2)
:if j-i >
1and nums[j]
== nums[j-1]
:continue
if nums[i]
+ nums[j]
+ nums[j+1]
+ nums[j+2]
> target:
break
if nums[i]
+ nums[j]
+ nums[j+1]
+ nums[j+2]
< target:
continue
left = j+
1 right = n-
1while left < right:
temp = nums[i]
+ nums[j]
+ nums[left]
+ nums[right]
if temp == target:
[nums[i]
,nums[j]
, nums[left]
, nums[right]])
while left < right and nums[left]
== nums[left+1]
: left +=
1while left < right and nums[right]
== nums[right-1]
: right -=
1 left +=
1 right -=
1elif temp > target:
right -=
1else
: left +=
1return res
18 四數之和
給定乙個含有 n 個整數的陣列 s,數列 s 中是否存在元素 a,b,c 和 d 使 a b c d target 請在陣列中找出所有滿足各元素相加等於特定值 的不重複組合。注意 解決方案集不能包含重複的四元組合。例如,給定陣列 s 1,0,1,0,2,2 並且給定 target 0。示例答案為 1...
18 四數之和
給定乙個包含 n 個整數的陣列nums和乙個目標值target,判斷nums中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與target相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 target ...
18 四數之和
給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 ...