77.组合
题目:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtrack(int n, int k, int startIndex)
{
//长度相等时找到了答案,存入result
if(path.size() == k)
{
result.push_back(path);
return;
}
//for循环横向遍历
for(int i = startIndex; i <= n; i++)
{
//将当前结点存入
path.push_back(i);
//回溯,纵向遍历
backtrack(n, k, i+1);
//每次回溯完之后,要撤销上一次存入的数据,以便进行下一次操作
path.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
backtrack(n, k, 1);
return result;
}
};
该博客介绍了如何使用C++解决LeetCode中的组合问题,给出了详细的代码实现。通过回溯算法,递归地生成从1到n中选择k个数的所有可能组合。示例展示了当n=4, k=2时的输出结果。文章还提供了超高效刷题顺序及题目详解笔记,帮助读者提升算法能力。

被折叠的 条评论
为什么被折叠?



