77. 组合

思路

通过递归函数dfs,从1到n的数字中选择k个数的所有组合。函数维护当前组合b,当b大小达到k时存入结果。每次递归从当前起始点i+1继续搜索,避免重复组合。

时间复杂度为O(C(n,k)),空间复杂度为O(k)递归栈空间。

代码

cpp 复制代码
class Solution {
private:
    vector<vector<int>> da;
    vector<int> b;
    void dfs(int n,int k,int a) {
        if(b.size()==k) {
            da.push_back(b);
            return;
        }
        for(int i=a;i<=n;i++) {
            b.push_back(i); 
            dfs(n,k,i+1); 
            b.pop_back(); 
        }
    }
public:
    vector<vector<int>> combine(int n,int k) {
        dfs(n,k,1);
        return da;
    }
相关推荐
小欣加油1 分钟前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
思麟呀10 分钟前
C++11 核心特性(三):强类型枚举、static_assert 与 std::tuple
开发语言·c++
一拳一个呆瓜22 分钟前
【STL】C++程序的启动与终止
c++·stl
尽兴-32 分钟前
2.1 向量基础:Embedding、余弦相似度、欧氏距离、向量检索
算法·embedding·欧氏距离·向量检索·余弦相似度
凡人叶枫1 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM训推一体工作站赋能多行业智能化升级
人工智能·算法·自动化
凡人叶枫1 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++
王老师青少年编程1 小时前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-复赛模拟卷6:文末附答案)
c++·答案·模拟卷·复赛·2026年·青少年信息素养大赛·算法应用主题赛
怪兽学LLM1 小时前
LeetCode 438 找到字符串中所有字母异位词(Python 固定滑动窗口+字符计数解法)
python·算法·leetcode
满怀冰雪1 小时前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法