-77の特別なバックトラックLeetcode。組成物(組み合わせ)
二つの整数を考える のn と kのリターンは。1 ...、 nは 可能なすべての k個の 組み合わせの数。
例:
入力:N = 4、K = 2 出力 : [ [2,4]、 [3,4]、 [2,3]、 [1,2]、 [1,3]、 [1,4]、 ]
分析:この質問はバックか線に沿う取得し、非常に簡単です。
ACコード:
クラスのソリューション{ リスト <リスト<Integer型>> ANS = 新しい ArrayListを<> (); 公衆リスト<リスト<整数>>組み合わせる(整数 nは、INTのK){ 場合(N <= 0 || K <= 0 || N < K){ 戻りANS。 } DFS(N、K、 1、新しいスタック<整数> ()); 戻るANSを。 } 公共 ボイド DFS(int型のn、int型の kは、int型今、スタック<整数> S){ 場合(s.size()== k)は{ ans.add(新しいのArrayList <Integer型> (S)); 返します。 } のために(int型私は今=私++; iが<= N ){ s.add(I)。 DFS(N、K、(I +1 )、S)。 s.pop(); } } }