代码随想录Day25 | 216.组合总和III 17.电话号码的字母组合

代码随想录Day25 | 216.组合总和III 17.电话号码的字母组合

  • 216.组合总和III
  • [ 17.电话号码的字母组合 ](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/)

216.组合总和III

文档讲解:代码随想录
视频讲解: 和组合问题有啥区别?回溯算法如何剪枝?
状态:

本题相较于昨天的组合问题,增加了一个约束就是和等于n才能放入,其余的不变, 终止条件和递归逻辑都是一样的。我是采用的最后求和的方法,而代码随想录中,将和作为参数传入到下一层中,可以方便剪枝处理,剪枝的判断要注意是否需要回溯,如果添加了元素就需要回溯

//从1,2,3,4,5,6,7,8,9这个数组中向下递归k层
//如果获得的k个数相加等于n
//这添加组合class Solution {
private:vector<int> path;vector<vector<int>> res;
public:void getPath(int MaxNum, int n, int k, int targetIndex){//终止条件if(path.size() == k){int sum = 0;for(int i=0;i<k;i++){sum += path[i];}if(sum == n){res.push_back(path);}return ;}//单层递归 遍历for(int i=targetIndex;i<=MaxNum-(k-path.size())+1;i++){path.push_back(i);getPath(MaxNum,n,k,i+1);path.pop_back();}return ;}
public:vector<vector<int>> combinationSum3(int k, int n) {//vector<int> nums{1,2,3,4,5,6,7,8,9};int MaxNum = 9;getPath(MaxNum,n,k,1);return res;}
};

17.电话号码的字母组合

文档讲解:代码随想录
视频讲解: 还得用回溯算法!| LeetCode:17.电话号码的字母组合
状态:

本题向下递归的层数就是digits的size,然后顺序是按照digits的顺序,每层遍历的为digits[i]对应的多个字母,这里采用unordered_map来进行映射数字和字符串的关系

//向下递归层数即为digits的size
//顺序按照digits顺序
//每层遍历的为digits[i]对应的多个字母class Solution {
private:vector<string> res;string path;unordered_map<int ,string> transmap;
public:void getPath(string digits,int Index){if(path.size() == digits.size()){res.push_back(path);return ;}//单层递归int i = digits[Index] - '0';//对该层的每个字母遍历for(char s : transmap.find(i)->second){path.push_back(s);//向下递归求下一个位置的字符getPath(digits,Index+1);path.pop_back();}return ;}
public:vector<string> letterCombinations(string digits) {if(digits == "") return vector<string> {};for(char s : digits){int i = s-'0';string temp;if(i==2){temp = "abc";}else if(i == 3){temp = "def";}else if(i == 4){temp = "ghi";}else if(i == 5){temp = "jkl";}else if(i == 6){temp = "mno";}else if( i == 7){temp = "pqrs";}else if(i == 8){temp = "tuv";}else if(i == 9){temp = "wxyz";}transmap.insert(pair<int,string>(i,temp));}getPath(digits,0);return res;}
};

对于输入异常情况 就是输入的不是2-9,也需要进行映射,来处理输出情况

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

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

相关文章

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有&#xff1a; 获取最后已知位置&#xff1b;获取设备当前位置&#xff1b;获取连续的位置更新&#xff1b;检查设备是否启用了定位服务&#xff1b;计算两个地理坐标之间的距离&#xff08;米&#xff09;&am…

AI时代—ChatGPT-4.5的正确打开方式

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

java 操作es 的基本操作

创建索引创建索引别名索引的相关设置查询索引数据bulk 导入数据持续更新中~ pom的坐标 <!--es相关--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><versio…

微信小程序(七)navigator点击效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.默认效果 2.无效果 3.激活效果 源码&#xff1a; index.wxml //如果 <navigator url"/pages/logs/logs">跳转到log页面&#xff08;默认&#xff09; </navigator><navigator url&q…

【LeetCode2744】最大字符串配对数目

1、题目描述 【题目链接】 标签&#xff1a;数组&#xff0c;哈希表&#xff0c;字符串&#xff0c;模拟  给你一个下标从 0 开始的数组 words &#xff0c;数组中包含 互不相同 的字符串。  如果字符串 words[i] 与字符串 words[j] 满足以下条件&#xff0c;我们称它们可以…

kafka hang 问题记录

参考文档 https://cloud.tencent.com/developer/article/1821477 9092端口 端口9092通常与Apache Kafka关联。 Kafka是一个开源的分布式事件流平台&#xff0c;用于构建实时的数据管道和流应用。 它能够处理任意大小的数据&#xff0c;以容错的方式处理数据流。 在默认配置…

C# HPSocket 服务器端的详细 Demo,数据收发打包方式,避免出现沾包的情况

HPSocket 是一款跨平台的 Socket 服务器框架&#xff0c;支持快速开发高性能、高可靠性的网络通信应用程序。它提供了丰富的 API&#xff0c;可以轻松实现客户端与服务器之间的数据收发、连接管理等功能。 代码结构&#xff1a; 1、Program.cs&#xff1a;程序入口&#xff0c…

从零开始,自己搭建一个autonomous mobile robot做gazebo仿真(1):mobile robot建模与添加差速控制器

这样一个简单的mobile robot模型 首先写xacro文件&#xff0c;创建 link joint transmission <?xml version"1.0"?> <robot xmlns:xacro"http://www.ros.org/wiki/xacro" name"whill_modelc" ><xacro:property name"PI&q…

【点云、图像】学习中 常见的数学知识及其中的关系与python实操[更新中]

文章目录 前言一、平均值、方差、协方差平均值&#xff08;mean&#xff09;np.mean()方差&#xff08;variance&#xff09;np.var()总体方差 np.var(a, ddof0)无偏样本方差np.var(a, ddof1)有偏样本方差标准差&#xff08;standard deviation&#xff09;np.std(a, ddof1)默认…

Docker 部署考核

Docker安装 安装必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker-ce安装源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 配置阿里云Docker Yum源: yum-config-manager --ad…

docker 挂载的文件同步问题 及 telnet redis账号可用

在一台新的服务器上部署docker发现redis服务因白名单没配不通&#xff0c;可以通过telnet来进行测试&#xff0c;包括账号是否可用&#xff1a; 1 telnet 192.168.1.11 6379 # ip port 2 ctrl ] 3 回车 4 键入 auth 111111 # 密码 5 成功 OK 失败 -WRONGPASS invalid us…

UE学习笔记--如何区分FString、FName、FText,以及使用场景

目录 前言FStringFNameFTextFString、FName 和 Text 之间的区别可变性内存开销用例表现本地化支持 结论参考链接 前言 最近在学习 UE&#xff0c;发现 UE 基本没有用到 std::string&#xff0c;基本使用的是FString、FName、FText。去网络上查了些资料并且学习了下&#xff0c…

Numpy中的矩阵运算

一、Matrix和Array Matrix名为矩阵&#xff0c;Array名为阵列&#xff0c;它们都可以作为矩阵运算的结构&#xff0c;功能上Matrix是Array的子集&#xff0c;Matrix运算符相较于Array简单。本文章主要讲解Numpy中的Matrix和Array关于矩阵运算的区别&#xff0c;代码部分已经给出…

Mysql数据库:快速入门

目录 一. 介绍 1. 数据库基础概念 2 MySQL简介 二. 安装与配置 1. 下载与安装 MySQL 2. 配置 MySQL 三. 基本操作 1. 数据库的创建与删除 3 数据操作语言&#xff08;DML&#xff09; 4 数据查询语言&#xff08;DQL&#xff09; 5 数据控制语言&#xff08;DCL&…

年终总结:我的2023编程之旅

1. 成果回顾 在这一年中&#xff0c;我成功地完成了多个项目&#xff0c;其中最重要的是我们团队开发的“智能数据分析平台”。我负责了后端开发的核心部分&#xff0c;该平台目前每天处理超过100万条数据&#xff0c;为我们的客户提供了宝贵的信息和建议。同时&#xff0c;我…

2024.1.19 网络编程 作业

思维导图 练习题 1> UDP传输实现聊天室 服务器端 #include <myhead.h> #define SER_IP "192.168.125.151" #define SER_PORT 9999 typedef struct Msg {char user[32]; //用户名int type; //执行操作1.登录、2.发消息、0.退出char text[1024]; …

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

在 Python 中检查一个数字是否是同构数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 同构数&#xff0c;又称为自守数或自同构数&#xff0c;是一类特殊的数字&#xff0c;它们具有一种有趣的性质&#xff1a;将其平方后的数字&#xff0c;可以通过某种方式重新排列得到原来的数字。本文将详细介绍…

Java读取制表符文本转换为JSON

在Java开发中&#xff0c;处理各种数据格式是常见的任务。本文将介绍如何使用Java读取制表符文本文件&#xff0c;并将其转换为JSON格式&#xff0c;以便于后续的数据处理和分析。我们将使用Java中的相关库来实现这个过程&#xff0c;并提供详细的代码示例。 引言&#xff1a;…

4654. 消除游戏

4654. 消除游戏 - AcWing题库 #include <iostream> #include <vector> #include <cstring> using namespace std;const int N 1e6 10; char s[N]; int l[N], r[N]; vector<int> v, p; bool st[N]; void ins(int i) {if (st[i]) return;st[i] true;…