给定两个整数
n
和k
,返回范围[1, n]
中所有可能的k
个数的组合。你可以按 任何顺序 返回答案。
回溯+剪枝文章来源:https://www.toymoban.com/news/detail-683503.html
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台文章来源地址https://www.toymoban.com/news/detail-683503.html
class Solution {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> res = new ArrayList<>();
Deque<Integer> path = new ArrayDeque<>();
dfs(1,n,k,path,res);
return res;
}
private void dfs(int begin,int n,int k,Deque<Integer> path,List<List<Integer>> res) {
if(path.size() == k){
res.add(new ArrayList<>(path));
return;
}
//剪枝
for(int i = begin; i <= n - (k-path.size())+1 ;i++){
path.addLast(i);
dfs(i+1,n,k,path,res);
path.removeLast();
}
}
}
到了这里,关于Leetcode77. 组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!