77. 组合
解题思路
- 回溯结束条件 track长度等于k 然后收集当前的路径
- 遍历所有的节点 然后选择当前节点 通过start参数控制遍历 避免产生重复的子集
- 移除当前的选择
class Solution {
List<List<Integer>> res = new LinkedList<>();
LinkedList<Integer> track = new LinkedList<>();
public List<List<Integer>> combine(int n, int k) {
backtrack(1,n,k);
return res;
}
void backtrack(int start,int n,int k){
if(k == track.size()){
// 当前回溯结束 收集当前记录
res.add(new LinkedList<>(track));
return;
}
// 回溯算法标准框架
for(int i = start; i <= n; i++){
// 路径 选择当前节点
track.addLast(i);
// 通过start参数控制树枝的遍历 避免产生重复的子集
backtrack(i + 1, n,k);
track.removeLast();// 移除当前选择
}
}
}
文章来源地址https://www.toymoban.com/news/detail-702260.html
文章来源:https://www.toymoban.com/news/detail-702260.html
到了这里,关于【回溯算法】77. 组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!