【LeetCode 49】77.组合

文章目录

一、题意

【LeetCode 49】77.组合_结果集

二、解答过程

【LeetCode 49】77.组合_leetcode_02

  • 一维数组​​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;
}
};