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