組み合わせ
If n = 4 and k = 2, a solution is:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
件名の説明:
図示二つの数nおよびkを、全ての組み合わせの出力は、1-Nの数、及び上述した実施形態の形態の範囲内で、数kから構成される。
アイデアの分析:
順列の問題、バックトラッキングソリューション
コード:
public List<List<Integer>>combine(int n,int k){
List<List<Integer>>res=new ArrayList<>();
if(n<k)
return res;
List<Integer>list=new ArrayList<>();
backtracking(res,list,1,n,k);
return res;
}
public void backtracking(List<List<Integer>>res,List<Integer>list,int start,int n,int k){
if(k==0){
res.add(new ArrayList<>(list));
return;
}
for(int i=start;i<=n-k+1;i++){//进行剪枝,满足序列中的元素递增
list.add(i);
backtracking(res,list,i+1,n,k-1);
list.remove(list.size()-1);
}
}