Menu
CoddyTech

4Sum

给定一个整数列表 nums 和一个整数 target。返回所有四元组 [a, b, c, d],其中四个值分别位于 nums 的四个不同位置,且它们的和为 target。每个四元组中的值都按非递减顺序排列。如果相同的四个值可以从不同位置选出,该四元组也只需出现一次。答案按第一个值、第二个值、第三个值依次排序。如果没有符合条件的四元组,则返回一个空列表。

函数

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
可供选择的数字,至少一个
targetinteger
每个四元组的和必须达到
返回值integer-2d-array
和为 target 的不同四元组,每个四元组都已排序,列表也已排序;如果没有,则为空列表

约束条件

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • 任意四个值的和介于 -4 × 108 和 4 × 108 之间,因此可以用 32 位整数表示。
  • 四个值都相同的四元组只算作一个。

示例

输入
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
输出
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
解释
四组四元组的和都是 1,例如 -3 + (-1) + 2 + 3。以 -3 开头的两组排在前面,并按第二个值排序:-1 在 0 前面。
challenge icon

进阶

统计值之和为 target 的四个位置组合数量,而不是不同的四元组数量。第二个示例的结果是 15。你能用 O(n²) 完成吗?

重置代码
def fourSum(nums, target):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

预期输出

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]