Menu
CoddyTech

4Sum

整数のリスト nums と整数 target が与えられます。nums の異なる4つの位置にある値を選び、その合計が target となるすべての4つ組 [a, b, c, d] を返してください。各4つ組の値は非減少順に並べてください。同じ4つの値を異なる位置から選べる場合でも、その4つ組は1回だけ含めます。答えは、1番目の値、次に2番目、3番目の順に並べてください。条件を満たす4つ組がない場合は、空のリストを返してください。

関数

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
選択する数値を少なくとも1つ
targetinteger
各4つ組が達成すべき合計
戻り値integer-2d-array
合計が target となる重複のない4つ組。それぞれをソートし、リスト全体もソートする。該当するものがなければ空のリスト

制約

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • 任意の4つの値の合計は-4 × 108から4 × 108の範囲内に収まるため、32ビット整数で表現できます。
  • 同じ4つの値を持つ4つ組は、1つとして数えます。

例

入力
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]]
説明
4つの四つ組はそれぞれ合計が1になります。たとえば、-3 + (-1) + 2 + 3です。-3で始まる2つが最初に来て、2番目の値の順に並びます。つまり、-1が0より先です。
challenge icon

発展問題

targetになる4つの位置の組の数を数えてください。異なる4つ組の数ではありません。2つ目の例は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]]