【回溯算法2】
力扣17.电话号码的字母组合
链接: link
思路
这道题容易想到用嵌套的for循环实现,但是如果输入的数字变多,嵌套的for循环也会变长,所以暴力破解的方法不合适。
可以定义一个map将数字和字母对应,这样就可以获得数字字母的映射了,递归中index参数理解成遍历过的第几个数字,也可以想成二叉树的深度,当index值等于digits长度时表示已经递归到叶子节点,要结束递归了。
关于把回溯问题想成二叉树的思路,可以参照之前写的回溯1的思路
class Solution {List<String> res = new ArrayList<>();// 保存最后结果public List<String> letterCombinations(String digits) {if(digits == null || digits.length() == 0){return res;}//初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};backTrace(digits,numString,0);return res;}StringBuilder sb = new StringBuilder();// 字符串拼接void backTrace(String digits, String[] numString,int index){if(index == digits.length()){res.add(sb.toString());return;}//当前 数字对应的字符串String str = numString[digits.charAt(index) - '0'];for(int i = 0;i<str.length();i++){sb.append(str.charAt(i));backTrace(digits,numString,index+1);sb.deleteCharAt(sb.length() - 1);}}
}
思路
这道题和回溯1出现的题有区别,但是思路相似,这道题可以出现重复的元素。所以递归下一层start参数不用+1
39.组合总和
链接: link
class Solution {List<List<Integer>> res = new ArrayList();List<Integer> path = new ArrayList();public List<List<Integer>> combinationSum(int[] candidates, int target) {backTrace(candidates,target,0,0);return res;}void backTrace(int[] candidates,int target,int sum, int start){if(sum == target){res.add(new ArrayList(path));return;}for(int i = start;i < candidates.length;i++){if (sum > target) {continue;}sum += candidates[i];path.add(candidates[i]);backTrace(candidates,target,sum,i);sum -= candidates[i];path.remove(path.size() - 1);}}
}
相关文章:
【回溯算法2】
力扣17.电话号码的字母组合 链接: link 思路 这道题容易想到用嵌套的for循环实现,但是如果输入的数字变多,嵌套的for循环也会变长,所以暴力破解的方法不合适。 可以定义一个map将数字和字母对应,这样就可以获得数字字母的映射了…...
21.《SpringBoot 异步编程@Async与CompletableFuture》
SpringBoot 异步编程 文章导读 本文系统讲解 Spring Boot 异步编程的核心技术与实践方案,涵盖从基础使用到高级优化的全链路知识。通过深入剖析 Async 注解原理、线程池配置策略、异步异常处理机制等关键技术点,结合典型业务场景的代码示例,…...
激光雷达YDLIDAR X2 SDK安装
激光雷达YDLIDAR X2 SDK安装 陈拓 2024/12/15-2024/12/19 1. 简介 YDLIDAR X2官方网址https://ydlidar.cn/index.htmlYDLIDAR X2 YDLIDAR X2是一款高性能的激光雷达传感器,具有以下主要特点和规格参数: 测距频率:3000Hz 扫描频…...
大模型在肝硬化风险预测及临床决策中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、肝硬化及大模型相关理论基础 2.1 肝硬化概述 2.2 大模型技术原理 2.3 大模型在医疗领域的应用现状 三、大模型预测肝硬化术前风险 3.1 术前风险因素分析 3.2 大模型预测术前风险…...
计算机毕业设计SpringBoot+Vue.js母婴商城(源码+LW文档+PPT+讲解+开题报告)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Java多线程三:补充知识
精心整理了最新的面试资料,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Lambda表达式 简介: 希腊字母表中排序第十一位的字母,英语名称为Lambda避免匿名内部类定义过多其实质属于函数式编程的概念 为什么要使用lam…...
计算机网络————(一)HTTP讲解
基础内容分类 从TCP/IP协议栈为依托,由上至下、从应用层到基础设施介绍协议。 1.应用层: HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程:…...
stream流常用方法
1.reduce 在Java中,可以使用Stream API的reduce方法来计算一个整数列表的乘积。reduce方法是一种累积操作,它可以将流中的元素组合起来,返回单个结果。对于计算乘积,你需要提供一个初始值(通常是1,因为乘法…...
最新扣子(Coze)案例教程:全自动DeepSeek 写影评+批量生成 + 发布飞书,提效10 倍!手把手教学,完全免费教程
👨💻群里有同学是做影视赛道的博主,听说最近DeepSeek这么火,咨询能不能用DeepSeek写影评,并整理电影数据资料,自动发布到飞书文档,把每天的工作做成一个自动化的流程。 那今天斜杠君就为大家…...
数据结构:动态数组vector
vector 是 C 标准库的动态数组。 在C语言中一般初学者会使用malloc,int[n]等方式来创建静态数组,但是这种方式繁琐且容易出错。我们做算法题一般使用动态数组vector, 并且在刷题网站的题目给的输入一般也是vector类型。 示例:vect…...
【HeadFirst系列之HeadFirst设计模式】第9天之模板方法模式:从咖啡和茶到Spring框架,掌握设计模式的精髓
模板方法模式:从咖啡和茶到Spring框架,掌握设计模式的精髓 《Head First 设计模式》是一本经典的设计模式入门书籍,它以轻松幽默的方式讲解了设计模式的核心思想。其中,模板方法模式是一个非常简单但非常实用的设计模式ÿ…...
力扣hot100——排序链表(常见方法,归并排序)
解题思路: 分解(Divide):将待排序的列表递归地分成两半,直到每个子列表只包含一个元素(此时每个子列表都是有序的)。解决(Conquer):递归地对每个子列表进行排…...
使用 DeepSeek 和 ECharts 实现大屏数据可视化
引言 在当今数据驱动的时代,数据可视化成为了分析和展示数据的重要手段。大屏数据可视化不仅能够直观地展示数据,还能帮助决策者快速理解复杂信息。本文将介绍如何结合 DeepSeek(一个强大的数据处理与分析工具)和 ECharts(一个流行的数据可视化库)来实现大屏数据可视化。…...
基于springboot+vue的新生报到管理系统
一、系统架构 前端:vue | element-ui | echarts 后端:springboot | mybatis-plus | jwt 环境:jdk1.8 | mysql | maven 二、代码及数据 三、功能介绍 01. 登录 02. 首页 03. 管理员-系统管理-用户管理 04. 管理员-系统…...
【面试系列】Java开发--AI常见面试题
文章目录 1、实际工作或学习中用过哪些Ai工具1.1、AI编程1.2、AI对话聊天1.3、AI图像工具1.4、AI办公工具 2、谈谈你知道的AI领域的一些常见词汇及其含义的理解? 例如AIGC、LLM、DeepLearning分别是什么意思?2.1、AIGC(Artificial Intelligen…...
Maven 基础环境搭建与配置(二)
四、本地仓库配置,存储依赖 在 Maven 的世界里,本地仓库就像是一个 “私人储物间”,专门用来存放项目所需的各种依赖构件,如 JAR 包、WAR 包等。当我们构建项目时,Maven 会首先在本地仓库中查找所需的依赖,…...
了解ffmpeg,安装并配置环境变量
一、了解FFmpeg FFmpeg 是一个功能强大的开源多媒体框架,能够处理音视频的录制、转换和流媒体传输。它由 Fabrice Bellard 发起,采用 LGPL/GPL 许可证,广泛应用于各种平台,包括 Linux、Windows 和 macOS 什么是FFmpeg࿱…...
Deepseek reasoning-content 透出调研
Deepseek reasoning-content 透出调研 部署方式:Docker Ollama Deepseek-R1:8b 参考: https://help.apiyi.com/deepseek-reasoning-content-guide.htmlhttps://yuluo-yx.github.io/blog/%E4%BD%BF%E7%94%A8-Ollama-%E9%83%A8%E7%BD%B2-DeepSeek-%E5…...
Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现
Codes 简介 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过创新的方式简化研发协同工作,使敏捷开发更易于实施。并提供低成本的敏捷开发解决方案࿰…...
Leetcode K个一组翻转链表
双指针法,java solution class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(head null || head.next null) return head;//设置pre和index节点ListNode pre head, index head.next;int m 0;while(m < k && index ! null) …...
【NUMA调度】深入解析NUMA架构下的负载均衡策略与性能调优
1. NUMA架构基础:从对称多处理到非一致性内存访问 第一次接触NUMA架构是在2015年调试一台八路服务器时。当时发现一个奇怪现象:同样的程序在不同CPU核心上运行时,性能差异能达到30%以上。这就是NUMA架构带来的典型特征——非均匀内存访问&…...
Python金融数据采集终极指南:yfinance从入门到深度应用完整教程
Python金融数据采集终极指南:yfinance从入门到深度应用完整教程 【免费下载链接】yfinance Download market data from Yahoo! Finances API 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance 在量化投资和金融数据分析领域,高效获取准…...
中兴光猫深度管理指南:3个核心功能解锁隐藏权限
中兴光猫深度管理指南:3个核心功能解锁隐藏权限 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否曾经遇到过中兴光猫管理权限不足的困扰?当你需要修改高级…...
KICS框架核心模块深挖:贾子逆算子(KIO)逆向映射机制解析
KIO逆向映射:终结波普尔困境的逻辑心脏摘要KIO(贾子逆算子)是KICS框架的逻辑基石,通过逆向映射机制将波普尔证伪主义的哲学批判编译为可执行的数学协议。其核心是“逆算”而非“证伪”:强制为每一命题生成反命题&#…...
ZYNQ 7045/690T项目实战:用Vitis/SDK给GD SPI Flash固化镜像的完整流程(含uboot文件替换指南)
ZYNQ 7045/690T项目实战:GD SPI Flash镜像固化全流程解析 在嵌入式系统开发中,ZYNQ SoC平台的启动配置一直是项目落地的关键环节。对于采用国产GD SPI Flash作为存储介质的开发者而言,如何绕过ID核查机制完成系统固化,成为实际工程…...
Python3 模块精讲:StringIO —— 内存字符串 IO 全解与实战
文章标签:#Python #后端开发 #数据处理 #IO 操作 #StringIO 一、引言:为什么 StringIO 是 Python 内存 IO 必备核心 在 Python 数据处理、文件模拟、日志捕获、接口测试等场景中,StringIO 早已成为轻量高效、开箱即用的内存级字符串操作工具…...
【仅限首批读者】JDK 25虚拟线程生产就绪检查表(含线程转储解析模板、监控埋点规范、告警阈值公式)
第一章:JDK 25虚拟线程生产就绪核心认知JDK 25标志着虚拟线程(Virtual Threads)正式迈入生产就绪(Production-Ready)阶段。与JDK 19引入的预览特性、JDK 21转为正式特性相比,JDK 25通过稳定性增强、监控工具…...
WenQuanYi Micro Hei字体实战指南:从安装到深度优化的全流程解决方案
WenQuanYi Micro Hei字体实战指南:从安装到深度优化的全流程解决方案 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.co…...
手把手教你部署通义千问3-VL-Reranker-8B:从本地到公网HTTPS访问全流程
手把手教你部署通义千问3-VL-Reranker-8B:从本地到公网HTTPS访问全流程 1. 通义千问3-VL-Reranker-8B简介 通义千问3-VL-Reranker-8B是一款强大的多模态重排序服务,能够对文本、图像和视频进行混合检索与排序。这个8B参数量的模型支持32k上下文长度和3…...
AI驱动的虚实融合技术:VR/AR核心突破与应用
1. 虚实融合的技术革命当Oculus创始人帕尔默拉奇第一次演示VR原型机时,观众看到的还只是粗糙的像素方块。如今在AI引擎的驱动下,虚拟世界的树叶已经能随用户呼吸节奏微微颤动,AR导航箭头会在真实路面上投射出符合透视原理的阴影。这种进化不是…...
