class Solution {
//定义全局变量存储符合条件的一个结果和所有符合条件的结果集合
LinkedList<Integer> res = new LinkedList<>();
List<List<Integer>> result = new LinkedList<>();
public List<List<Integer>> combine(int n, int k) {
//定义整数存储当前递归从哪里开始遍历(每次选择范围随着选择的进行而收缩)
int startIndex = 1;
//开始回溯
backtracking(n, k, startIndex);
//返回结果
return result;
}
//回溯函数
private void backtracking(int n, int k, int startIndex){
//果结果数组的长度符合条件,则保存结果数组到集合,终止递归
if(res.size() == k){
result.add(new LinkedList<>(res));
return;
}
//for循环从定义的收缩整数开始遍历,将节点保存到中数组中
for(int i = startIndex; i <= n; i++){
res.add(i);
//回溯
backtracking(n, k, i + 1);
//回溯后撤销本次递归处理的结果
res.removeLast();
}
}
}