-
题目:
-
给定两个整数
n和k,返回范围[1, n]中所有可能的k个数的组合。
你可以按 任何顺序 返回答案。
-
-
思路:采用回溯算法;
-
代码如下:
class Solution {
//全局变量收集符合条件结果集
List<List<Integer>> result = new ArrayList<>();
//全局变量记录当前所在路径
LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> combine(int n, int k) {
//调用回溯算法
combineHelp(n,k,1);
return result;
}
void combineHelp(int n,int k,int startIndex){
//终止条件
if(path.size()==k){
result.add(new LinkedList<Integer>(path));
return ;
}
//开始遍历
for(int i = startIndex;i <= n-(k-path.size())+1; i++){
//增加一个节点
path.add(i);
//回溯
combineHelp(n,k,i+1);
//弹出节点,从下一个开始
path.removeLast();
}
}
}
这篇博客介绍了如何使用回溯算法来找出给定整数范围内所有可能的k个数的组合。文章详细阐述了思路,并提供了一段Java代码实现,该代码通过定义全局变量存储结果和路径,递归地遍历所有可能的组合,当路径长度等于k时将路径添加到结果集中。
854

被折叠的 条评论
为什么被折叠?



