算法训练营Day25(回溯)

216.组合总和III

216. 组合总和 III - 力扣(LeetCode)

 

class Solution {private List<Integer> path = new ArrayList<>();private List<List<Integer>> result = new ArrayList<>();public List<List<Integer>> combinationSum3(int k, int n) {backTracking(k,n,0,1);return result;}void backTracking(int k,int targetSum,int sum,int startIndex){if(path.size()==k){//剪枝if(sum>targetSum) return;if(targetSum==sum){result.add(new ArrayList<>(path));}return;}//5个数,找3个(k-path.size()),那么最多到5-3+1 也就是3这个下标for(int i = startIndex;i<=9-(k-path.size())+1;i++){//单层逻辑sum+=i;path.add(i);//递归backTracking(k,targetSum,sum,i+1);//回溯sum-=i;path.removeLast();}}
}

 17.电话号码的字母组合 

17. 电话号码的字母组合 - 力扣(LeetCode)

对java来说,String操作没有那么方便,就要接住StringBuilder,多了一个成员变量。

这里用temp操作,也就不涉及隐藏回溯逻辑这一说了。

class Solution {List<String> list = new ArrayList<>();//收获单个结果StringBuilder temp = new StringBuilder();public List<String> letterCombinations(String digits) {if(digits==null || digits.length()==0) return list;//初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};backTrackding(digits,numString,0);return list;}void backTrackding(String digits,String [] numString,int index){if(index == digits.length()){//结构收集list.add(temp.toString());return ;}//按下数字之后的字符串String str = numString[digits.charAt(index)-'0'];//-'0'str变为int//单层逻辑for(int i = 0;i<str.length();i++){temp.append(str.charAt(i));backTrackding(digits,numString,index+1);//回溯temp.deleteCharAt(temp.length()-1);}}
}

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

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

相关文章

C++ map和vector向量使用方法

C map用法 C 中 map 提供的是一种键值对容器&#xff0c;里面的数据都是成对出现的,如下图&#xff1a;每一对中的第一个值称之为关键字(key)&#xff0c;每个关键字只能在 map 中出现一次&#xff1b;第二个称之为该关键字的对应值。 map的使用 需要导入头文件 #include …

51单片机(STC8)-- 串口配置及串口重定向(printf)

文章目录 STC8串口概述串口寄存器配置串口1控制寄存器SCON串口1数据寄存器SBUF串口1模式 1工作方式串口1波特率计算方式 串口注意事项串口1通信demo串口重定向 STC8串口概述 由下图可知STC8H3K64S4带有4个4个串行通信接口&#xff0c;芯片名后两位S所带的数字即代表这款芯片带…

Ubuntu 常用命令之 exit 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 exit命令在Ubuntu系统下用于结束一个终端会话。它可以用于退出当前的shell&#xff0c;结束当前的脚本执行&#xff0c;或者结束一个ssh会话。 exit命令的参数是一个可选的整数&#xff0c;用于指定退出状态。如果没有指定&#…

Linux top命令详解,看这篇就够了

Linux top命令详解 top命令截图top详情面板解释top数据列解释top -hvtop交互式命令top交互模式帮助文档常见指令 top 是 Linux 系统中用于实时监视系统状态的工具。它可以显示系统中的 CPU 使用率、内存使用情况、运行中的进程等信息&#xff0c;并且还可以实时更新这些信息。 …

TCP协议:可靠传输的基石

目录 1. 数据完整性的保证 2. 数据的有序传输 3. 确认应答机制 4. 流量控制 5. 拥塞控制 6. 重传机制 结论 引言 TCP&#xff08;Transmission Control Protocol&#xff09;是计算机网络中的一个重要协议&#xff0c;它以其可靠性而闻名。TCP是一种面向连接的协议&…

Java自动化测试系列[v1.0.0][常见页面操作处理]

[控制滚动] package util; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement;public class ScrollBarUtil {/*** 控制滚动条向下拉到底* param driver 浏览器驱动*/public static void toBottom…

windows安全配置实验手册

访问控制策略&#xff08;L1940520022J&#xff09; 预备知识 Windows 7中&#xff0c;不仅有面向软件的限制方法&#xff0c;还增加了一种名为AppLocker的访问控制策略&#xff08;仅适用于企业版和旗舰版&#xff09;。 实验环境 操作系统类型&#xff1a;windows 7。 实…

工业信息采集平台的五大核心优势

关键字&#xff1a;工业信息采集平台,蓝鹏数据采集系统,蓝鹏测控系统, 生产管控系统, 生产数据处理平台,MES系统数据采集, 蓝鹏数据采集平台通过实现和构成其他工业数据信息平台的一级设备进行通讯&#xff0c;从而完成平台之间的无缝对接。这里我们采用的最多的方式是和PLC进行…

【小黑嵌入式系统第十二课】μC/OS-III程序设计基础(二)——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量

上一课&#xff1a; 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础&#xff08;一&#xff09;——任务设计、任务管理&#xff08;创建&基本状态&内部任务&#xff09;、任务调度、系统函数 文章目录 一、系统函数使用场合1.1 时间管理1.1.1 控制任务的执行周期1…

部署LNMP动态网站

部署LNMP动态网站 安装LNMP平台相关软件1. 安装软件包2. 启动服务&#xff08;nginx、mariadb、php-fpm&#xff09;3. 修改Nginx配置文件&#xff0c;实现动静分离4. 配置数据库 上线wordpress代码 &#xff08;测试搭建的LNMP环境是否可以使用&#xff09;1. 上线php动态网站…

基于Java Web的“萌宠小知识”网站设计与实现论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统萌宠小知识信息管理难度大&#xff0c;容错率低&#xff…

用户认证篇

文章目录 1. 如何生成用户认证token令牌1.1 相关表1.2 生成令牌逻辑1.3 最终结果 1. 如何生成用户认证token令牌 1.1 相关表 分为访问令牌access_token和刷新令牌refresh_token, 分别保存在system_oauth2_access_token和system_oauth2_refresh_token。 访问令牌设置的过期时间…