二刷代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合

 目录

一、216. 组合总和 III

二、17.电话号码的字母组合


一、216. 组合总和 III

题目链接:力扣

文章讲解:代码随想录

视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III

题目:

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

只使用数字1到9
每个数字 最多使用一次 
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

代码:

class Solution {
public:void dfs(vector<vector<int>> &ans, int k, vector<int> &path, int n, int begin, int sum, int num){if (sum > n) return;if (num >= k){if (sum == n)ans.push_back(path);return;}for (int i = begin; i <= 9-(k-num)+1; i++){path[num] = i;dfs(ans, k, path, n, i+1, sum+i, num+1);}return;}vector<vector<int>> combinationSum3(int k, int n) {vector<vector<int>> ans;vector<int> path(k, 0);dfs(ans, k, path, n, 1, 0, 0);return ans;}
};

时间复杂度: O(c(k/M​)×k)                            空间复杂度O(M)

⏲:5:52

总结:比组合问题多一个限制总和,添加在返回条件部分即可。

二、17.电话号码的字母组合

题目链接:力扣

文章讲解:代码随想录

视频讲解:还得用回溯算法!| LeetCode:17.电话号码的字母组合

题目:

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

代码:

class Solution {
public:vector<vector<char>> numbs = {{}, {}, {'a', 'b', 'c'}, {'d','e','f'}, {'g', 'h', 'i'}, {'j', 'k', 'l'}, {'m', 'n', 'o'}, {'p', 'q', 'r', 's'}, {'t', 'u', 'v'}, {'w', 'x', 'y', 'z'}};void dfs(vector<string> &ans, string path, string &digits, int begin, int end){if (begin == end){ans.push_back(path);return;}int numb = digits[begin]-'0';for (char c : numbs[numb])dfs(ans, path+c, digits, begin+1, end);return;}vector<string> letterCombinations(string digits) {if (digits.empty()) return {};vector<string> ans;string path = "";dfs(ans, path, digits, 0, digits.size());return ans;}
};

时间复杂度: O(3^m×4^n)                                       空间复杂度: O(m+n)

⏲:10:01

总结:本题是多个集合求组合,注意索引是数字的还是字符的。用智能指针更加方便增加字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双指针、bfs与图论

1238. 日志统计 - AcWing题库 import java.util.*;class PII implements Comparable<PII>{int x, y;public PII(int x, int y){this.x x;this.y y;}public int compareTo(PII o){return Integer.compare(x, o.x);} }public class Main{static int N 100010, D, K;st…

Wings与c++test自动单元测试

Wings与c test 参考 Wings与c test都是用于生成单元测试驱动框架的工具。两者差异在于以下几点&#xff1a; 1.基本普通类型&#xff0c;wings与c test生成用例大致相同&#xff0c;wings采用随机生成一组或者多组数值&#xff0c;而c test依据临界值生成固定的随机数。 例如…

数字电子技术实验(四)

单选题 1.组合逻辑电路中产生竞争冒险的原因是&#xff1f; A. 电路没有最简化 。 B. 时延 。 C. 电路有多个输出。 D. 逻辑门的类型不同。 答案&#xff1a;B 评语&#xff1a;10分 单选题 2.下列表达式不存在竞争冒险的有&#xff1f; 答案&#xff1a;A 评语&#x…

深度强化学习(七)策略梯度

深度强化学习(七)策略梯度 策略学习的目的是通过求解一个优化问题&#xff0c;学出最优策略函数或它的近似函数&#xff08;比如策略网络&#xff09; 一.策略网络 假设动作空间是离散的,&#xff0c;比如 A { 左 , 右 , 上 } \cal A\{左,右,上\} A{左,右,上}&#xff0c;策…

【零基础学习06】嵌入式linux驱动中PWM驱动基本实现

大家好,今天给大家分享一下,如何利用PWM外设来实现LCD背光调节,本次实验使用Linux系统中PWM控制器以及PWM子系统来控制对应的功能。 第一:设备树下PWM控制节点 PWM对应的节点信息如下: pwm3: pwm@02088000 {compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm…

Linux(ubuntu) 安装kotlin

Kotlin 是一种基于 Java 语言的静态类型编程语言&#xff0c;它可以运行于 JVM 上 1. 安装 Java Development Kit (JDK) Kotlin 运行于 JVM 上&#xff0c;所以首先需要安装 Java Development Kit&#xff08;JDK&#xff09; Ubuntu 或 Debian 系统 以ubuntu22.04为例 sudo…

操作系统系列学习——一个实际的schedule函数

文章目录 前言一个实际的schedule函数 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感…

我打算修一段时间仙,望周知

1、大科学家牛顿也修过仙&#xff0c;虽然修的是西方的仙&#xff1b;我们东方人不信那个邪&#xff0c;有自己优秀的传统文化&#xff0c;我只修东方的仙&#xff1b;另外&#xff0c;作为普通凡人我成就和智慧都无法望牛顿老人家项背的普通人&#xff0c;即使现在暂时“修仙”…

设计模式--享元模式(Flyweight Pattern)

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它的主要目的是用共享技术有效地支持大量细粒度的对象。 享元模式主要包含以下几个角色&#xff1a; Flyweight&#xff08;抽象享元类&#xff09;&#xff1a;定义一个接口&#xff0c;…

【代码】求出指定图片的平均RGB颜色值

import cv2求出指定图片的平均颜色值# 读取图片 image cv2.imread(D:\\Desktop\\0001.png)# 计算平均颜色 # cv2.mean()函数会返回图像所有通道的平均值 # 这里的平均值是按通道分别计算的&#xff0c;返回值是一个包含每个通道平均值的元组 average_color_per_channel cv2.m…

Android笔记:监听侧边音量键

方法一:重写方法:方法二:BroadcastReceiver方法一:重写方法: @Overridepublic boolean onKeyDown (int keyCode, KeyEvent event) {// 获取手机当前音量值 // int i = getCurrentRingValue ();switch (keyCode

vue3之自定义指令

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令。自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 写法 1. 没有使用 <script setup>的情况下 export default {setup() {/*...*/},directives: {// 在…

wenti

Installing NuttX dependencies 正在读取软件包列表... 正在分析软件包的依赖关系树... 正在读取状态信息... 没有可用的软件包 gcc-multilib&#xff0c;但是它被其它的软件包引用了。 这可能意味着这个缺失的软件包可能已被废弃&#xff0c; 或者只能在其他发布源中找到 E: …

国家开放大学 黑龙江开放大学 开学啦

标题&#xff1a;打开知识的大门——电大搜题助力黑龙江开放大学学子 作为一名资深学者&#xff0c;我有幸近日了解到了一款名为"电大搜题"的互联网应用&#xff0c;它为广播电视大学的学子们提供了便捷高效的学习工具。特别是对于就读于黑龙江开放大学的学生们来说&…

FFmpeg工作流程及视频文件分析

FFmpeg工作流程: 解封装(Demuxing)--->解码(Decoding)--->编码(Encoding)--->封装(Muxing) FFmpeg转码工作流程: 读取输入流--->音视频解封装--->解码音视频帧--->编码音视频帧--->音视频封装--->输出目标流 可简单理解为如下流程: 读文件-->解…

软件测试工程师简历要怎么写,才能让HR看到

作为软件测试的从业者&#xff0c;面试或者被面试都是常有的事。 可是不管怎样&#xff0c;和简历有着理不清的关系&#xff0c;面试官要通过简历了解面试者的基本信息、过往经历等。 面试者希望通过简历把自己最好的一面体现给面试官&#xff0c;所以在这场博弈中&#xff0…

特别数的和

题目 【问题描述】 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 0&#xff09; &#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 n 中&#xff0c;所有…

MySQL和Redis如何保证数据一致性?

前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用&#xff0c;在读取缓存这方面基本都是一致的&#xff0c;大概都是按照下图的流程进行操作&#xff1a; 但是在更新缓存方面&#xff0c;是更新完数据库再更新缓存还是直接删除缓存呢&#xff1f;又或者是先删除缓存再…

Oracle EBS R12 SLA子分类帐会计 核心标准表(Table)

目录 一、会计事务实体&#xff08;子帐与子模块的关系&#xff09; 二、会计事件 三、子帐头 四、子帐行 五、子帐关联 六、日记帐参考&#xff08;子帐与GL日记帐的关系&#xff09; 一、会计事务实体&#xff08;子帐与子模块的关系&#xff09; SELECT * FROM xla.xla_tra…

什么又是线程呢??

线程&#xff1a; 线程可以并发的执行&#xff0c;但是线程的地址是可以共享的 进程与线程的比较&#xff1a; 进程>线程 线程分三种&#xff1a; 用户线程 只有用户程序的库函数来 用户线程 因为操作系统感知不到 线程&#xff0c;如果有线程在运行&#xff0c;然后不交…