day25打卡:回溯算法part02

day25打卡:回溯算法part02

216.组合总和三

原题链接

代码随想录链接

和经典的回溯题目很相似,只是需要在每层for循环中都记录当前的总和;

Java代码如下:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> combinationSum3(int k, int n) {backtracking(n,k,0,1);return result;}public void backtracking(int targetSum,int k,int sum,int startindex){if(path.size() == k){if(sum == targetSum) result.add(new ArrayList<>(path));return;}for(int i = startindex; i <= 9; i++){sum += i;path.add(i);backtracking(targetSum,k,sum,i+1);sum -= i;path.removeLast();}}
}

17.电话号码的数字组合

原题链接

代码随想录链接

我觉得这道题最重要的地方就在于需要对题目已知的这个条件做一个通俗易懂的转换,比如说题目所给的是2-9分别拥有了不同的字符,这个时候可以想到定义一个字符串数组,前两位定义为空字符串,从下标为2开始,每个位置都定义为对应数字的各个字符串。

知道了这个,那么接下来的思路就不难了,也是经典的回溯,只不过for循环的条件改了一点。

Java代码如下:

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

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

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

相关文章

【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成

【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成 目录 【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成步骤 1. 启动一个用于安装 OpenLDAP 的 EC2 实例步骤 2. 安装 OpenLDAP启动 docker 容器查看所有用户信息extended LDIFLDAPv3base <ou=users,dc=example,dc=org&g…

Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景&#xff0c;这一篇文章就针对Redis的常用数据结构进行一个说明&#xff0c;通过示例的形式演示每一种数据结构如何使用。 当涉及Redis的数据操作时&#xff0c;不同数据类型对应的不同数据结构&#xff0c;如下就对5大常用的数据类型进行…

Transformer,革命性的深度学习架构

Transformer 是一种革命性的深度学习架构&#xff0c;专门设计用于处理序列数据&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出&#xff0c;打破了当时基于循环神…

2024最新版Android studio安装入门教程(非常详细)

目录 JDK安装与配置 一、下载JDK 二、JDK安装 三、JDK的环境配置 四、JDK的配置验证 Android studio安装 Android studio连接手机真机调试&#xff08;以华为鸿蒙为例&#xff09; 一、新建一个android项目 二、进入项目面板 三、配置Android Studio 四、安装手机驱…

【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后&#xff0c;本篇文章可以根据进程替换的知识带你自主实现一个shell命令行 实现步骤 1.显示命令行提示 2.读取输入指令以及对应选项 3.分割第二步的指令以及选项到命令行参数表中 4.处理内建命令 5.进程替换 1.显示命令行提示 我们通过观察bash的命令行…

03-Docker入门

03-Docker入门 在运行之前&#xff0c;首先通过如下命令确认Docker的状态 sudo docker info运行第一个容器 运行如下命令&#xff0c;运行我们的第一个centos容器&#xff0c;如果本地没有该镜像&#xff0c;就会自动下载。这里的两个参数&#xff0c;-i保证我们可以输入&am…

滑动窗口算法 - LCR 014. 字符串的排列

前言 接前文 滑动窗口算法 - LC76 最小覆盖子串-CSDN博客&#xff0c;此题也是套用滑窗模板&#xff0c;但是在两个细节点处稍有不同。 正文 LCR 014. 字符串的排列 给定两个字符串 s1 和 s2&#xff0c;写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xf…

Linux多进程通信总结——进程间通信看这一篇足够啦!

1.进程间通信方式综合比较 优点缺点有名管道1&#xff09;任意进程间通信1&#xff09;缓冲区有限无名管道1&#xff09;简单方便1&#xff09;单向通信2&#xff09;父子进程间通信3&#xff09;缓冲区有限消息队列1&#xff09;任意进程通信2&#xff09;无需考虑进程间同步…

Linux 文件相关命令

一、查看文件命令 1&#xff09;浏览文件less 默认查看文件的前 10 行。 less /etc/services ##功能说明&#xff1a; #1.默认打开首屏内容 #2.按【回车】按行访问 #3.按【空格】按屏访问 #4.【从上向下】搜索用/111,搜索包含111的内容&#xff0c;此时按n继续向下搜&#x…

PCL 基于直线进行KMeans聚类

文章目录 一、K-Means算法二、K-Means算法步骤三、实现代码四、实现效果参考文献一、K-Means算法 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类…

JAVAEE之IoCDI

Spring 是⼀个 IoC&#xff08;控制反转&#xff09;容器&#xff0c;作为容器, 那么它就具备两个最基础的功能&#xff1a; • 存 • 取 Spring 容器管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由 Spring来负责对象的创建…

想学网络安全,从哪里开始?网络安全的学习路线

网络安全学习路线&#xff1a; 想学习网络安全专业的知识&#xff0c;想当黑客&#xff0c;但是不知道该从哪里开始学。 我给你一个路线&#xff01; 清晰图片和大纲&#xff1a;https://docs.qq.com/doc/DU1lpVFpSbWVrd2p3

面试官:为什么忘记密码要重置,而不是告诉我原密码?

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 最近有个同学在面试中遇到了一个很有意思的问题&#xff0c;我相信大多…

基于单片机的电动车电池充电保护装置设计

摘 要:针对电动车充电安全方面的隐患,提出基于单片机控制的电动车电池充电保护装置的设 计。该装置以单片机为核心,包含数字温度传感器、控制按钮、外接显示屏、降温风扇及其他组件。控制按钮主要用来设定温度,温度传感器分别装在蓄电池和充电器内部,若充电器或蓄电池温度…

蓝桥杯23年第十四届省赛-异或和之和|拆位、贡献法

题目链接&#xff1a; 蓝桥杯2023年第十四届省赛真题-异或和之和 - C语言网 (dotcpp.com) 1.异或和之和 - 蓝桥云课 (lanqiao.cn) 参考题解&#xff1a; 蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09;-CSDN博客 洛谷P9236 [蓝桥杯 2023 省 A]…

ubuntu23 安装minio

要在Ubuntu 23版本上安装MinIO&#xff0c;您可以遵循以下步骤&#xff1a; 1. 下载MinIO Server二进制文件 访问MinIO官方下载页面&#xff08;https://min.io/download&#xff09;&#xff0c;或者直接在终端使用wget命令下载最新版本的MinIO二进制文件。假设您想要安装的…

【T5中的激活函数】GLU Variants Improve Transformer

【mT5中的激活函数】GLU Variants Improve Transformer 论文信息 阅读评价 Abstract Introduction Gated Linear Units (GLU) and Variants Experiments on Text-to-Text Transfer Transformer (T5) Conclusion 论文信息 名称内容论文标题GLU Variants Improve Transfo…

Python课程设计(课设)源码哪里找?

在互联网上寻找免费的Python课程设计&#xff08;课设&#xff09;源码&#xff0c;可以参考以下几个途径&#xff1a; 开源平台&#xff1a;GitHub是一个非常受欢迎的开源代码托管平台&#xff0c;你可以在这里搜索相关的Python项目。很多开发者会将他们的项目开源&#xff0c…

flutter获取手机中的系统路径信息

https://www.bilibili.com/video/BV1wE421g7sw获取系统中的路径 获取系统中的路径&#xff0c;并在这个路径中创建一个文本文件【str.txt】 然后进行写入【str.txt】 再读取这个文件【str.txt】 手机没有开通root权限无法看到写入到【应用程序文档目录】路径中的文件 用来…

MySQL故障排查与优化

一、MySQL故障排查 1.1 故障现象与解决方法 1.1.1 故障1 1.1.2 故障2 1.1.3 故障3 1.1.4 故障4 1.1.5 故障5 1.1.6 故障6 1.1.7 故障7​ 1.1.8 故障8 1.1.9 MySQL 主从故障排查 二、MySQL优化 2.1 硬件方面 2.2 查询优化 一、MySQL故障排查 1.1 故障现象与解决方…