[LeetCode] 0039. 組み合わせ合計

組み合わせ合計

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

中くらい

 


の配列が与えられると、 明確な 整数 候補者 とターゲット整数 ターゲット、 戻る すべてのリスト ユニークな組み合わせ の 候補者 ここで、選択した数値の合計は ターゲット. の組み合わせを返すことができます 任意の注文.

の 同じ 番号は次から選択できます 候補者 の 回数無制限選択した数値の少なくとも 1 つの頻度が異なる場合、2 つの組み合わせは一意になります。

テスト ケースは、合計が一意の組み合わせの数になるように生成されます。 ターゲット 未満です 150 指定された入力の組み合わせ。

例 1:

入力: 候補 = [2,3,6,7]、ターゲット = 7
出力: [[2,2,3],[7]]
説明:
2 と 3 が候補で、2 + 2 + 3 = 7 です。2 は複数回使用できることに注意してください。7 は候補で、7 = 7 です。組み合わせは 2 つだけです。

例 2:

入力: 候補 = [2,3,5]、ターゲット = 8
出力: [[2,2,2,2],[2,3,3],[3,5]]

例 3:

入力: 候補 = [2]、ターゲット = 1
出力: []

制約:

  • 1 <= 候補.長さ <= 30
  • 2 <= 候補者[i] <= 40
  • のすべての要素 候補者 は 明確な.
  • 1 <= ターゲット <= 40

パイソン

				
					import List クラスの入力から 解決策: def combationSum(self, 候補: List[int], target: int) -> List[List[int]]: result = [] def backtrack(remain: int, comb: List[int] 、start: int): if left == 0: result.append(list(comb)) return elif remember < 0: return for i in range(start, len(candidates)): comb.append(candidates[i]) backtrack(remain - 候補[i], comb, i) comb.pop() backtrack(target, [], 0) return result
				
			
ja日本語