当前位置: 首页 > article >正文

组合(DFS)

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

输入:n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

示例 2:

输入:n = 1, k = 1
输出:[[1]]

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

class Solution {
    vector<vector<int>> v;
    vector<int> path;
public:
    vector<vector<int>> combine(int n, int k) {
        dfs(n, 1, k);
        return v;
    }
    void dfs(int n, int i, int k){
        if(path.size() == k)  // 如果当前组合的大小为 k,保存当前组合
        v.push_back(path);

        for(; i <= n; i++){
            path.push_back(i);
            dfs(n, i+1, k);   // 递归选择下一个数字
            path.pop_back();  // 回溯,撤销选择,尝试下一个数字
        }
    }
};

一开始很不理解这类题,做多两道题后也能拿捏了


http://www.kler.cn/a/391898.html

相关文章:

  • [代码随想录Day10打卡] 理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
  • Spring框架之观察者模式 (Observer Pattern)
  • 【C++】new操作符的使用说明
  • 物理设备命名规则(Linux网络服务器 15)
  • Gsensor加速度传感器数据异常及概率性卡死
  • RoseTTAFold MSA_emb类解读
  • 一文彻底了解UDHCP源码核心☝️
  • 工业相机选取
  • docker compose 多个 Dockerfile
  • VUE使用TS开发打包时发现校验问题无法打包
  • 349. 两个数组的交集
  • C 语言冒泡排序算法详解
  • 二叉树的练习题(中)
  • 【蓝桥杯 2021 省 B2】特殊年份
  • 如何优化Kafka消费者的性能
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • 【微服务设计】分布式系统一致性:深入解析2PC(两阶段提交)和TCC的优势与劣势
  • wordpress搭建主题可配置json
  • springboot中返回数据脱敏
  • FFmpeg将mp4的文件转化为m4a
  • Spring Boot编程训练系统:构建可扩展的应用
  • 网络安全-Linux基础(bash脚本)
  • 【设计模式系列】享元模式(十五)
  • RabbitMQ 与 PHP Swoole 实现
  • 期权懂|期权新手入门教学:期权合约有哪些要素?
  • 容器技术在持续集成与持续交付中的应用