给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
class Solution {
List<List<Integer>> output = new LinkedList();
int n;//全局变量
int k;
public void backtrack(int first, LinkedList<Integer> curr) {
// if the combination is done
if (curr.size()==k){
output.add(new LinkedList(curr));//先new一个新的LinkList,然后把curr加到其中
return;
}
for(int i=first;i<=n;i++){
curr.add(i);
backtrack(i+1,curr);
curr.removeLast();
}
}
public List<List<Integer>> combine(int n, int k) {
this.n = n;
this.k = k;
backtrack(1, new LinkedList<Integer>());
return output;
}
}
List<List> output = new LinkedList();
int n;//全局变量
int k;
new LinkedList(curr)
//表示先new一个新的LinkList,然后把LinkedList curr加到其中