题目描述:

参考代码:
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> lists=new ArrayList<>();
dfs(lists,n,k,new ArrayList<Integer>(),1);
return lists;
}
private void dfs(List<List<Integer>> lists, int n, int k,List<Integer> list,int start) {
if(k==0){
lists.add(new ArrayList<>(list));
return;
}
for (int i = start; i <=n-k+1 ; i++) {
list.add(i);
dfs(lists,n,k-1,list,i+1);
list.remove(list.size()-1);
}
}
private List<List<Integer>> ans = new ArrayList<>();
public List<List<Integer>> combine(int n, int k) {
getCombine(n, k, 1, new ArrayList<>());
return ans;
}
public void getCombine(int n, int k, int start, List<Integer> list) {
if(k == 0) {
ans.add(new ArrayList<>(list));
return;
}
for(int i = start;i <= n - k + 1;i++) {
list.add(i);
getCombine(n, k - 1, i+1, list);
list.remove(list.size() - 1);
}
}