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

216 组合总和 |||

暴力

class Solution {List<List<Integer>>res = new ArrayList<>();List<Integer>newList = new ArrayList<>();public List<List<Integer>> combinationSum3(int k, int n) {soluHelper(1,k,n,0);return res;}private void soluHelper(int num,int k,int n,int sum){if(sum > n)return;//减枝操作if(newList.size() == k){if(sum == n)res.add(new ArrayList(newList));return;}for(int i = num;i <= 9;i++){newList.add(i);sum += i;soluHelper(i + 1,k,n,sum);newList.remove(newList.size() - 1);sum -= i;}}
}

时间复杂度O(N × 2^{N})N为集合的大小,本题中为9,一个有2^{N}个状态(选择或者不选这个数字)

空间复杂度O(N) newList的空间大小

减枝优化 

class Solution {List<List<Integer>>res = new ArrayList<>();List<Integer>newList = new ArrayList<>();public List<List<Integer>> combinationSum3(int k, int n) {soluHelper(1,k,n,0);return res;}private void soluHelper(int num,int k,int n,int sum){if(sum > n)return;//减枝操作if(newList.size() == k){if(sum == n)res.add(new ArrayList(newList));return;}for(int i = num;i <= 9 - (k - newList.size()) + 1;i++){//减枝操作newList.add(i);sum += i;soluHelper(i + 1,k,n,sum);newList.remove(newList.size() - 1);sum -= i;}}
}

时间复杂度O(N × 2^{N})N为集合的大小,本题中为9,一个有2^{N}个状态(选择或者不选这个数字)

空间复杂度O(N) newList的空间大小

17 电话号码的字母组合

class Solution {List<String>res = new ArrayList<>();StringBuffer sb = new StringBuffer();Map<Integer,String>mp = new HashMap<>();String[] strs = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};public List<String> letterCombinations(String digits) {if(digits.length() == 0 || digits == null)return res;SoluHelper(digits,0);return res;}private void SoluHelper(String digits,int cnt){if(cnt == digits.length()){res.add(sb.toString());return;}String str = strs[digits.charAt(cnt) - '0'];for(int i = 0;i < str.length();i++){sb.append(str.charAt(i));SoluHelper(digits,cnt + 1);sb.deleteCharAt(sb.length() - 1);}}
}

时间复杂度O(3^{N}×4^{M})N是对应三个字母的数字个数,M是对应四个字母的数字个数

空间复杂度O(3^{N}×4^{M})N是对应三个字母的数字个数,M是对应四个字母的数字个数

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

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

相关文章

qt笔记之qml和C++的交互系列(一):初记

code review! —— 杭州 2023-11-16 夜 文章目录 一.qt笔记之qml和C的交互&#xff1a;官方文档阅读理解0.《Overview - QML and C Integration》中给出五种QML与C集成的方法1.Q_PROPERTY&#xff1a;将C类的成员变量暴露给QML2.Q_INVOKABLE()或public slots&#xff1a;将C类…

Gradle中的DSL,Groovy Kotlin 引用arr库新写法

build.gradle 文件这样写 api fileTree(include: [*.aar], dir: libs) api fileTree(include: [*.aar], dir: libs/gromore) //gromore为lib子目录 api fileTree(include: [*.aar], dir: libs/gromore/baidu) api fileTree(include: [*.aar], dir: libs/gromore/ks…

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-B

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …

scp 跨服务器传输命令,把一个服务器上的文件复制传到当前服务器目录下

要将一个服务器上的文件复制到当前服务器的目录下&#xff0c;可以使用 scp 命令进行跨服务器传输。以下是具体的命令格式&#xff1a; 复制 scp usernamesource_server:/path/to/source_file destination_directory username: 远程服务器的用户名。 source_server: 远程服务…

探索arkui(2)--- 布局(列表)--- 2(支持分组/实现响应滚动位置)

前端开发布局是指前端开发人员宣布他们开发的新网站或应用程序正式上线的活动。在前端开发布局中&#xff0c;开发人员通常会展示新网站或应用程序的设计、功能和用户体验&#xff0c;并向公众宣传新产品的特点和优势。前端开发布局通常是前端开发领域的重要事件&#xff0c;吸…

MongoDB分片集群搭建

----前言 mongodb分片 一般用得比较少&#xff0c;需要较多的服务器&#xff0c;还有三种的角色 一般把mongodb的副本集应用得好就足够用了&#xff0c;可搭建多套mongodb复本集 mongodb分片技术 mongodb副本集可以解决数据备份、读性能的问题&#xff0c;但由于mongodb副本集是…

创作者焦点:Temple of Dum-Dum(试炼 3)

《Bomkus 博士的试炼》创作的幕后花絮。 《创作者焦点》系列共分为六部分&#xff0c;重点介绍《Bomkus 博士的试炼》的游戏创作过程及其独特的游戏功能。 Temple of Dum-Dum&#xff1a; Temple of Dum-Dum 是 Bomkus 博士试炼中的第三个挑战&#xff0c;该试炼由六项体验组成…

SecureCRT 9.4.2 for Mac

SecureCRT是一款由VanDyke Software公司开发的终端仿真软件&#xff0c;它提供了类似于Telnet和SSH等协议的远程访问功能。SecureCRT专门为网络管理员、系统管理员和其他需要保密访问网络设备的用户设计。 SecureCRT具有以下特点&#xff1a; 安全性&#xff1a;SecureCRT支持…

py 时候同时打开多个页面,操作多个页面

在Python中&#xff0c;可以使用多种库和工具来同时打开多个页面并操作它们。以下是几种常见的方法&#xff1a; 使用浏览器自动化库&#xff1a; selenium&#xff1a;这是一个流行的库&#xff0c;用于自动化浏览器操作。你可以使用Selenium来启动多个浏览器窗口或标签页&…

windows服务器热备、负载均衡配置

安装网络负载平衡 需要加入的服务器上全部需要安装网络负载平衡管理器 图形化安装&#xff1a;使用服务器管理器安装 在服务器管理器中&#xff0c;使用“添加角色和功能”向导添加网络负载均衡功能。 完成向导后&#xff0c;将安装 NLB&#xff0c;并且不需要重启计算机。 …

337. 打家劫舍 III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…

GoFrame学习随便记1

用Yii1.1中典型的 blog 项目作为例子来学习Web应用应该不错。数据库 sqlite3&#xff0c;windows下可以下载 sqlite-tools-win-x64-*** &#xff08;https://www.sqlite.org/download.htm&#xff09;&#xff0c;把下载的几个exe放到 %GOPATH%\bin 目录下&#xff0c;而该目…

MATLAB中zticks函数用法

目录 语法 说明 示例 指定 z 轴刻度值和标签 指定非均匀 z 轴刻度值 以 2 为增量递增 z 轴刻度值 将 z 轴刻度值设置回默认值 指定特定坐标区的 z 轴刻度值 删除 z 轴刻度线 zticks函数的功能是设置或查询 z 轴刻度值。 语法 zticks(ticks) zt zticks zticks(auto)…

java解析Cron时间表达式为中文描述

碰到个需求&#xff0c;后端返回给前端的时候如果直接返回表达式给前端在页面展示&#xff0c;用户会看不懂&#xff01;所以要转为非开发人员看到也能明白的中文描述 这里说一下后端解析&#xff0c;无非就是空格切分一个个判断了&#xff1a; 前端js解析在这里&#xff1a;…

ReportLab创建合同PDF

一、前言 有一个项目需要将电子签名后的报价合同和生成的发票发送给客户&#xff0c;这种发送给客户的文件一般都是使用PDF格式&#xff0c;主要是因为PDF特别适合阅读且不同平台打开文件格式不会变形&#xff0c;不过要在程序中生成PDF还是比较麻烦的&#xff0c;我们的发票是…

TCP与UDP协议

TCP与UDP协议 1、TCP协议&#xff1a; 1、TCP特性&#xff1a; TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中&#xff0c;仅有两方进行彼此通信。广播和多播不能用于 TCP。TCP 使用校验和&#xff0c;确认和重传机制来保证可靠传输。TCP 给数据分节进行排序…

AdaBoost 算法:理解、实现和掌握 AdaBoost

一、介绍 Boosting 是一种集成建模技术&#xff0c;由 Freund 和 Schapire 于 1997 年首次提出。从那时起&#xff0c;Boosting 就成为解决二元分类问题的流行技术。这些算法通过将大量弱学习器转换为强学习器来提高预测能力 。 Boosting 算法背后的原理是&#xff0c;我们首先…

万宾科技智能传感器EN100-C2有什么作用?

在日常生活中井盖是一种常见的城市设施&#xff0c;但井盖出现问题可能会对人们的生活造成什么影响呢&#xff1f;移位或老化的井盖可能会威胁人们的安全&#xff0c;同时也会影响城市生命线的正常运行。然而智能井盖的出现为解决这些问题提供了有效的应对方案。 WITBEE万宾智能…

udp多点通信-广播-组播

单播 每次只有两个实体相互通信&#xff0c;发送端和接收端都是唯一确定的。 广播 主机之间的一对多的通信所有的主机都可以接收到广播消息(不管你是否需要)广播禁止穿过路由器&#xff08;只能做局域网通信&#xff09;只有UDP可以广播广播地址 有效网络号全是1的主机号 192.1…

Pikachu(皮卡丘靶场)初识XSS(常见标签事件及payload总结)

目录 1、反射型xss(get) 2、反射性xss(post) 3、存储型xss 4、DOM型xss 5、DOM型xss-x XSS又叫跨站脚本攻击&#xff0c;是HTML代码注入&#xff0c;通过对网页注入浏览器可执行代码&#xff0c;从而实现攻击。 ​ 1、反射型xss(get) Which NBA player do you like? 由…