组合,画出图来就可以确定。
关键是它的元素在一次递归中不能重复,所以传入i+1.
class Solution {
List<List<Integer>> res=new ArrayList<List<Integer>>();
public List<List<Integer>> combine(int n, int k) {
if(n==0 || k>n){
return res;
}
List<Integer> path=new ArrayList<>();
core(n,k,path,1,0);
return res;
}
public void core(int n,int k,List<Integer> path,int begin,int depth){
if(depth==k){
res.add(new ArrayList<Integer>(path));
return;
}
for(int i=begin;i<=n;i++){
path.add(i);
core(n,k,path,i+1,depth+1);
path.remove(path.size()-1);
}
}
}