Menu
CoddyTech

Combination Sum

異なる正の整数のリスト candidates と正の整数 target が与えられます。候補の各数を好きな回数だけ使って、合計がちょうど target になる候補の組み合わせをすべて見つけてください。[2, 3, 3] と [3, 2, 3] は同じ組み合わせです。

各組み合わせは昇順に並べ、組み合わせ同士は辞書順に並べて返してください。つまり、2つの組み合わせが異なる最初の位置で、値が小さい方を先にします。

関数

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
使用できるさまざまな値を、任意の順序で、それぞれ好きなだけ何度でも
targetinteger
すべての組み合わせの合計は正確に達しなければなりません
戻り値integer-2d-array
目標値の合計になるすべての組み合わせを、それぞれ昇順に並べ、辞書順で列挙

制約

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • すべてのcandidatesの値は異なり、特定の順序にはなっていません。
  • 少なくとも1つの組み合わせがtargetに達し、多くても150個の組み合わせが達します。

例

入力
candidates = [6, 2, 3]target = 8
出力
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
説明
2が4つの場合、2 + 3 + 3 と 2 + 6 はいずれも合計が8になり、2つ目の値の順に並んでいます。2がない場合、残るのは3と6だけで、それらの合計は3の倍数ですが、8はそうではありません。
challenge icon

発展問題

各候補は今後、最大1回までしか使用できず、candidatesには同じ値が複数含まれる場合があります。同じ組み合わせが2回現れないようにするには、探索をどのように変更しますか?

コードをリセット
def combinationSum(candidates, target):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

candidates = [6, 2, 3]
target = 8

期待される出力

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]