给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
leetcode
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (n==k) {
List<Integer> tmp=new ArrayList<Integer>();
for(int i=1;i<=n;++i) {
tmp.add(i);
}
res.add(tmp);
} else if (k==1) {
for(int i=1;i<=n;++i) {
List<Integer> tmp=new ArrayList<Integer>();
tmp.add(i);
res.add(tmp);
}
} else {
//不包括n
List<List<Integer>> lists1 = combine(n-1, k);
//包括n
List<List<Integer>> lists2 = combine(n-1, k-1);
for(List<Integer> x: lists2) x.add(n);
res.addAll(lists1);
res.addAll(lists2);
}
return res;
}