本文主要是介绍【算法刷题day24】Leetcode:77. 组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Leetcode 77. 组合
- 解题思路
- 代码
- 总结
草稿图网站
java的Deque
Leetcode 77. 组合
题目:77. 组合
解析:代码随想录解析
解题思路
递归三部曲:递归函数的返回值以及参数;回溯函数终止条件;单层搜索的过程
代码
class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> paths = new ArrayList<>();private void backtracking(int n, int k, int startIndex) {if (paths.size() == k) {res.add(new ArrayList<>(paths));return;}for (int i = startIndex; i <= n; i++){paths.add(i);backtracking(n, k, i + 1);paths.remove(paths.size()-1);}}public List<List<Integer>> combine(int n, int k) {backtracking(n, k, 1);return res;}
}//减枝
class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> paths = new ArrayList<>();private void backtracking(int n, int k, int startIndex) {if (paths.size() == k) {res.add(new ArrayList<>(paths));return;}for (int i = startIndex; i <= n + 1 - (k - paths.size()); i++){paths.add(i);backtracking(n, k, i + 1);paths.remove(paths.size()-1);}}public List<List<Integer>> combine(int n, int k) {backtracking(n, k, 1);return res;}
}
总结
减枝是在每次循环开始的减枝;如果剩下的元素个数无法满足达到k个则减枝
这篇关于【算法刷题day24】Leetcode:77. 组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!