非反復配列要素の候補と目標数の目標を考えると、あなたはそのターゲット番号との組み合わせのためのすべての候補者を見つけることができます。
候補者の無制限番号が繰り返され、選択することができます。
説明:
(ターゲットを含む)すべての数値は正の整数です。
ソリューションセットは、その重複した組み合わせを含めることはできません。
例1:
入力:候補= [2,3,6,7-]、目標 = 7は、
セットが解決される:
[
[7]、
[2,2,3-]
]
例2:
入力:候補= [2,3,5]、目標 = 8は、
セットが解決される:
[
[2,2,2,2]、
[2,3,3]、
[3,5]
]
出典:滞在ボタン(LeetCode)
python3
クラスソリューション:
デフcombinationSum(自己、候補者:リストの[int]は、ターゲットます。int) - >一覧[一覧[INT]]:
デフsearchSum(候補者、ターゲット):
RES = []
私の範囲(LEN(候補))でのために:
ヴァル=候補[I]
ヴァル<ターゲットの場合:
LS = searchSum(候補[I:]、ターゲット-VAL)
!LS = []の場合:
LSでELEのために:
ele.append(ヴァル)
LS +何も=何も
elifのヴァル==対象:
何もしない+何も= [[価値]]
リターンRES
リターンsearchSum(候補者、ターゲット)