回溯法 | 含有k个元素的集合
class Solution {
List<List<Integer>> res = new ArrayList<>();
public List<List<Integer>> combine(int n, int k) {
dfs(1,n,k, new ArrayList<>());
return res;
}
public void dfs(int q, int n, int k, List<Integer> list){
if( (n-q+1) < (k-list.size())) return;
if(list.size()==k){
res.add(new ArrayList<>(list));
return;
}
for(int i=q;i<=n;i++){
list.add(i);
dfs(i+1,n,k,list);
list.remove(list.size()-1);
}
}
} 