【LeetCode 49】77.组合

简介: 【LeetCode 49】77.组合

一、题意

二、解答过程

  • 一维数组path用来存放结果集合------[1,2] [1,3] [1,4]。
  • 二维数组 result用来存放统一的结果集合------[[1,2] [1,3] [1,4]]。
  • 用到回溯三部曲
class Solution {
private:
    vector<vector<int>> result; // 存放符合条件结果的集合
    vector<int> path; // 用来存放符合条件结果
    //1.参数:startIndex为索引开始的位置
    void backtracking(int n, int k, int startIndex) {
        //2.终止条件:到叶子节点了
        if (path.size() == k) {
            result.push_back(path);
            return;
        }
        //3.单层搜索的过程,搜集路径上的元素,
        for (int i = startIndex; i <= n; i++) {
            path.push_back(i); // 处理节点 加入1
            backtracking(n, k, i + 1); // 递归2,3,4
            path.pop_back(); // 回溯,撤销处理的节点
        }
    }
public:
    vector<vector<int>> combine(int n, int k) {
        result.clear(); // 可以不写
        path.clear();   // 可以不写
        backtracking(n, k, 1);
        return result;
    }
};


目录
相关文章
|
4月前
|
算法
LeetCode第77题组合
文章通过树形结构的遍历方法解决了LeetCode第77题"组合",使用递归算法生成所有可能的组合,并总结了将组合问题转换为树遍历的解题技巧。
LeetCode第77题组合
|
6月前
|
移动开发 C++
【洛谷 P1157】组合的输出 题解(深度优先搜索+枚举子集)
该问题要求编程输出从1到n中选择r个元素的所有组合,组合按字典序排列。输入包含两自然数n和r(1&lt;n&lt;21, 0≤r≤n)。输出每个组合时,每个数字占据3个字符宽度。提供的AC代码使用C++,通过递归搜索方法枚举子集。样例输入为5 3,输出显示所有3个元素的组合。
53 0
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第2期】组合与排列问题系列
【经典LeetCode算法题目专栏分类】【第2期】组合与排列问题系列
|
6月前
|
SQL 算法 大数据
力扣175题:组合两个表(含模拟描述)
力扣175题:组合两个表(含模拟描述)
|
7月前
|
Java
leetcode-77:组合
leetcode-77:组合
32 0
|
算法
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
49 0
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
34 0
|
算法 Java 网络架构
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
|
算法
组合排序回溯编程题集合(leetcode)
组合排序回溯编程题集合(leetcode)
|
C++
C++ leetcode之排列与组合专题
C++ leetcode之排列与组合专题
87 0