-216の特殊なバックトラックLeetcode。全組成物III(組合せ合計III)
同様のトピック:
-39の主題後戻りLeetcode。組み合わせの総数(組み合わせ合計)
-40の特別なバックトラックLeetcode。全組成物II(組合せ合計II)
そして、すべての合計を見つける のn の k個の 組み合わせの数を。組成物は、1-- 9の正の整数を含んでいてもよい、及び反復数は、各組合せには存在しません。
説明:
- すべての数値は正の整数です。
- ソリューションセットは、重複の組み合わせを含めることはできません。
例1:
入力:K = 3、N- = 7。 出力:[[2,4]]
例2:
入力:K = 3、。N- = 9。 出力:[[1,2,6]、[1,3,5]、[2,3,4]
分析:
アップグレードの前に二つの質問、リンク記事の冒頭の前に二つの質問があります。
kの数を取って、1-9を求めて、Kとnが与えられ、nにそれらを許します。
同様に、バックトラック、得られる二分岐に分割して撮影していない、プラスと判断ならびに採取数の決意にされます。
クラスのソリューション{ リスト <リスト<Integer型>> ANS = 新しい ArrayListを<> (); 公衆リスト<リスト<整数>> combinationSum3(int型 K、int型N){ もし(K == 0 || N == 0)リターンANS。 DFS(K、N、 1、新規のArrayList <整数>()、0 ); 戻るANSを。 } 公共 ボイド DFS(INT K、整数 nは、整数、ステップ、のArrayList <整数>リスト、int型の合計){ 場合(はlist.size()== K &&和== N){ ans.add(新しい ArrayListを<> (リスト))。 返します。 } であれば(ステップ> 9)に戻り、 list.add(ステップ)。 DFS(K、N、ステップ + 1、リスト、和+ ステップ)。 list.remove(はlist.size() -1 )。 DFS(K、N、ステップ +1 、リスト、合計)。 } }