一、题意
二、解答过程
- 一维数组
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; } };