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

77. 组合【 力扣(LeetCode) 】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


77. 组合

一、题目描述

给定两个整数 nk,返回范围 [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

三、解题思路

  1. 基本思路:
      回溯法 + 剪枝。
      为了保证不重复,我们只需要保证每个序列都是递增,所以序列的每个位置取值都有范围,第 i 个数的取值范围为 [i,n-k+i]
  2. 具体思路:
    • 回溯:
      • 如果该元素超出该位置的范围,则返回。【剪枝】
      • 序列 vec 添加该元素。
      • 如果是最后一个元素,则将序列 vec 添加到 ans 并弹出最后一个元素。
      • 递归遍历下一个位置的元素。
      • 弹出最后一个元素【回溯要恢复状态】

四、参考代码

时间复杂度: O ( k ⋅ C n k ) \Omicron(k\cdot C_n^k) O(kCnk) 【一共 C n k C_n^k Cnk 的序列,每个序列 k 个元素】
空间复杂度: O ( k ) \Omicron(k) O(k) 【递归栈最深为 k 】

class Solution {
public:vector<vector<int>> ans;vector<int> vec;int _n;void dfs(const int& i, const int& k) {if (i > _n - k + 1)return;vec.emplace_back(i);if (k == 1) {ans.emplace_back(vec);vec.pop_back();return;}for (int j = i + 1; j <= _n; j++) {dfs(j, k - 1);}vec.pop_back();}vector<vector<int>> combine(int n, int k) {_n = n;int t = n - k + 1;for (int i = 1; i <= t; i++)dfs(i, k);return ans;}
};
http://www.xdnf.cn/news/438175.html

相关文章:

  • AGI大模型(15):向量检索之调用ollama向量数据库
  • 视频图像压缩领域中 DCT 的 DC 系数和 AC 系数详解
  • 【JAVA常见数据类型】
  • 【工奥阀门科技有限公司】签约智橙PLM
  • 家用或办公 Windows 电脑玩人工智能开源项目配备核显的必要性(含 NPU 及显卡类型补充)
  • 基于RFSOC ZU28DR+DSP 6U VPX处理板
  • 适配华为昇腾 NPU 的交互式监控工具
  • Java问题排查常用命令行工具速查表
  • 深度学习中.cuda()、.eval()与no_grad详解
  • 【MySQL】日志缓冲区详解 以及 InnoDB内存结构总结
  • 解决docker alpine缺少字体的问题 Could not initialize class sun.awt.X11FontManager
  • 浅析 Golang 内存管理
  • Chrome安装最新vue-devtool插件
  • 国产免费工作流引擎star 6.5k,Warm-Flow升级1.7.2(新增案例和修复缺陷)
  • 【​​HTTPS基础概念与原理​】​​SSL/TLS协议演进史:从SSLv3到TLS 1.3
  • 嵌入式Linux Qt开发:2、Qt creator简单配置、Qt Designer使用以及信号槽机制使用
  • QT之信号与槽
  • 嵌入式设计模式基础--C语言的继承封装与多态
  • Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
  • 初学c语言14(指针6)
  • 用模型预测控制算法实现对电机位置控制仿真
  • 深入浅出入侵检测系统(IDS)的工作原理与应用场景
  • TTS-Web-Vue系列:Vue3实现内嵌iframe文档显示功能
  • Ubuntu24.04编译ORB_SLAM的一系列报错解决
  • 数字取证-内存取证(volatility)
  • 使用VSCode编辑Markdown+PlantUml
  • 前端面试宝典---js垃圾回收机制
  • “海外滴滴”Uber的Arm迁移实录:重构大规模基础设施​
  • 知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑
  • 广东省省考备考(第十天5.14)—言语(第三节课)