代码随想录day25

216.组合总和III

● 力扣题目链接
● 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

思路

● 和上题差不多,只不过多了一个条件限制
● 时间复杂度:O(n * 2^n)

代码

class Solution {List<List<Integer>> res = new ArrayList();LinkedList<Integer> path = new LinkedList();public List<List<Integer>> combinationSum3(int k, int n) {combinationSum3Helper(k, n, 1, 0);return res;}private void combinationSum3Helper(int k, int n, int startIndex, int sum) {if (sum > n) return; // 一旦sum大了,直接返回if (path.size() == k) { // 达到size要求if (sum == n) { // 如果sum符合要求,才加入res.add(new ArrayList<>(path));}return; // 不然直接return}for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) { // for循环遍历本层sum += i;path.addFirst(i);combinationSum3Helper(k, n, i + 1, sum); // 递归遍历深度sum -= i;path.removeFirst();}}
}

17.电话号码的字母组合

● 力扣题目链接
● 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

思路

● 我们先用一个数组,存储数字和对应字符的关系
● 假如输入的是23,我们先看看输入的是不是空,是空直接返回,否则进入回溯函数,使用一个startIndex标记遍历到了这个数组的哪个位置
● 如果startIndex走到了最后,说明找到了一个结果
● 否则开始本层的循环(就是这个数字对应的字符循环),使用StringBuilder标记,取了之后进入下一层递归,要看下一个数字的情况,因此传入的是startIndex + 1
● 时间复杂度: O(3^m * 4^n),其中 m 是对应四个字母的数字个数,n 是对应三个字母的数字个数

代码

class Solution {List<String> res = new ArrayList();StringBuilder builder = new StringBuilder();String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};public List<String> letterCombinations(String digits) {if (digits == null || digits.length() == 0) return res;letterCombinationsHelper(digits, 0);return res;}private void letterCombinationsHelper(String digits, int startIndex) {if (startIndex == digits.length()) {res.add(new String(builder));return;}String str = numString[digits.charAt(startIndex) - '0'];for (int i = 0; i < str.length(); i++) {builder.append(str.charAt(i));letterCombinationsHelper(digits, startIndex + 1);builder.deleteCharAt(builder.length() - 1);}}
}

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

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

相关文章

HTTP Get 和 Post 的区别

分析&回答 使用规范 根据HTTP规范&#xff0c;GET用于信息获取&#xff0c;而且应该是安全的和幂等的。 根据HTTP规范&#xff0c;POST表示可能修改变服务器上的资源的请求。 传递参数 GET请求的数据会附在URL之后&#xff08;就是把数据放置在HTTP协议头中&#xff09;。…

基于Kohonen网络的聚类算法

1.案例背景 1.1 Kohonen网络 Kohonen网络是自组织竞争型神经网络的一种,该网络为无监督学习网络,能够识别环境特征并自动聚类。Kohonen神经网络是芬兰赫尔辛基大学教授Teuvo Kohonen 提出的,该网络通过自组织特征映射调整网络权值,使神经网络收敛于一种表示形态。在这一形态中…

EG1164大功率同步整流升压模块开源,最高效率97%

EG1164大功率同步整流Boost升压电源模块&#xff0c;最高效率97%&#xff0c;输入电压8~50V&#xff0c;输出电压8~60V可调&#xff0c;最大功率300瓦以上&#xff0c;开关频率219kHz。 白嫖了张嘉立创的彩色丝印券就随便画了个板试试&#xff0c;第一次打彩色丝印。 因为我测…

Mongodb常见操作命令

一、登录相关以及启动 启动服务mongodb&#xff1a; cd /usr/local/mongodb/bin ./mongod -f /data/mongodb/mongodb1.conf./mongod -f /data/mongodb/mongodb2.conf./mongod -f /data/mongodb/mongodb3.conf 登录mongodb数据库&#xff08;mongodb默认端口:27017&#xff0…

ORA-00600之数据库内部BUG 22114696

ORA-00600之数据库内部BUG 22114696 错误信息Bug信息应对办法 错误信息 应用包运行时收到报错信息如下&#xff1a; ORA-00600: internal error code, arguments: [4450],[kpotx.c],[2866],[],… ORA-02063: preceding line from DW_JOB_PROD line ORA-06512: line at "…

如何飞速成为开源贡献者(Contributor)

如何飞速成为开源贡献者Contributor 一、环境信息1.1 硬件信息1.2 软件信息 二、Git安装2.1 Git介绍2.2 Git下载安装 三、开源项目选定四、GitHub参与开源流程4.1 Fork项目4.2 SSH配置4.2.1 为什么要配置SSH4.2.2 如何配置SSH 4.3 Clone项目4.4 IDEA关联4.5 PR生成4.6 PR提交 一…

Navicat16安装教程

注&#xff1a;因版权原因&#xff0c;本文已去除破解相关的文件和内容 1、在本站下载解压后即可获得Navicat16安装包和破解补丁&#xff0c;如图所示 2、双击“navicat160_premium_cs_x64.exe”程序&#xff0c;即可进入安装界面&#xff0c; 3、点击下一步 4、如图所示勾选“…

Java 中数据结构HashMap的用法

Java HashMap HashMap 是一个散列表&#xff0c;它存储的内容是键值对(key-value)映射。 HashMap 实现了 Map 接口&#xff0c;根据键的 HashCode 值存储数据&#xff0c;具有很快的访问速度&#xff0c;最多允许一条记录的键为 null&#xff0c;不支持线程同步。 HashMap 是…

防雷接地+防雷检测综合应用解决方案

防雷接地和防雷检测是防雷工程中的重要内容&#xff0c;它们旨在保护建筑物和设备免受雷电的危害。地凯科技将介绍防雷接地和防雷检测的基本原理、施工案例方案和国标措施。 防雷接地是指将建筑物的金属结构、防雷装置和电气设备与地面连接&#xff0c;形成一个接地系统&#…

一些指针的练习题

一、指针练习 1.1 声明一个整型变量和一个指向整型的指针变量&#xff0c;将指针指向该整型变量&#xff0c;然后通过指针修改变量的值。 #include <stdio.h> int main() {int a 0; int* p &a;// *p 20; // 修改指针变量的值 // printf("a 1 %d", …

安装Ubuntu系统,将U盘当作启动盘后写保护怎么回复?

下载ChipGenius 插入写保护的U盘&#xff0c;打开ChipGenius.exe后可以扫描到U盘&#xff0c;如下图中的E:盘就是我插入的U盘&#xff08;我的PC上只有C、D两个分区&#xff09;&#xff1b; ChipGenius的作用 下载ChipGenius是为了获取U盘的设备信息&#xff1a;重点是主控…

数据集学习笔记(七):不同任务数据集的标签介绍(包含目标检测、图像分割、行为分析)

文章目录 一、目标检测1.1 TXT1.2 COCO1.3 XML 二、图像分割2.1 json2.1 TXT2.1.1 json转txt 三、行为分析3.1 TXT3.2 JSON 一、目标检测 1.1 TXT 每行表示&#xff08;类别&#xff0c;中心x相对坐标&#xff0c;中心y相对坐标&#xff0c;相对宽度、相对高度&#xff09; 1…

LeetCode494. 目标和

494. 目标和 文章目录 [494. 目标和](https://leetcode.cn/problems/target-sum/)一、题目二、题解方法一&#xff1a;目标和路径计数算法方法二&#xff1a;01背包方法三&#xff1a;01背包一维数组 一、题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个…

语言基础篇7——Python运算符

运算符 算数运算符 # 算术运算符 # # - # * # ** # / 浮点除 # // 整数除 # %赋值运算符 # 赋值运算符 # # # - # / 浮点除等 # // 整数除等 # * # **关系运算符 # 关系运算符 # > # # < # > # < # ! # is # is not逻辑运算符 # 逻辑运算符 # 返回表达式…

Golang网络编程

Golang网络编程 网络编程简介网络编程协议网络分层模型TCP/IP协议什么是DNS套接字&#xff08;Socket&#xff09;客户端服务器模型TCP/UDP的区别HTTP协议会话sessionCookiehttpsHTTP请求格式HTTP响应格式http头信息http请求头信息http响应头信息HTTP状态码http内容类型和内容…

面试官:说一下 MyBatis 的一级缓存和二级缓存 ?

目录 1. MyBatis 的缓存机制 2. 为什么不默认开启 MyBatis 的二级缓存 3. MyBatis 如何开启二级缓存 4. MyBatis 有哪些缓存清除策略 1. MyBatis 的缓存机制 MyBayis 中包含两级缓存&#xff1a;一级缓存和二级缓存 1. 一级缓存是 SqlSession 级别的&#xff0c;是 MyBati…

【从零单排Golang】第十五话:用sync.Once实现懒加载的用法和坑点

在使用Golang做后端开发的工程中&#xff0c;我们通常需要声明一些一些配置类或服务单例等在业务逻辑层面较为底层的实例。为了节省内存或是冷启动开销&#xff0c;我们通常采用lazy-load懒加载的方式去初始化这些实例。初始化单例这个行为是一个非常经典的并发处理的案例&…

需求文档规模 (pages/KLOC)需求缺陷密度 (个/KLOC)

质量目标规范 KLOC(千行代码)是一个计算机程序有多大或者需要多少人来完成其编码工作的一个传统的度量标准。这些代码通常是源代码。高级源语言(比如C)编译成的机器代码行数要比低级语言(比如汇编语言)编译成的机器代码要多&#xff0c;这样&#xff0c;一千行C代码将会比一千…

jmeter 常数吞吐量定时器

模拟固定吞吐量的定时器。它可以控制测试计划中各个请求之间的时间间隔&#xff0c;以达到预期的吞吐量。 参数包括&#xff1a; Target Throughput&#xff1a;目标吞吐量&#xff08;每分钟请求数&#xff09;Calculate Throughput based on&#xff1a;吞吐量计算基准&…

线程调度的原理、线程执行过程、线程栈模型

线程调度的原理 线程调度是操作系统或执行环境管理多个线程并分配CPU时间片给它们的过程。线程调度的原理取决于操作系统和执行环境的实现,但基本原理通常包括以下关键概念: 时间片轮转:在多任务系统中,CPU的时间被分为若干时间片(时间量子)。每个线程被分配一个时间片,…