首页/新闻资讯/正文详情

元宝 深度思考 LeetCode 113.路径总和 || Kotlin实现

发布时间:2026/9/27 22:32:56 来源:云帆数科 栏目:资讯中心
元宝 深度思考    LeetCode 113.路径总和 || Kotlin实现
下面是 LeetCode 113Path Sum II 的 Kotlin 实现代码风格符合 LeetCode 的提交规范并附带了详细注释。Kotlin 完整实现可直接提交/**LeetCode 给定的 TreeNode 定义class TreeNode(varval: Int) {var left: TreeNode? nullvar right: TreeNode? null}*/class Solution {// 存放所有满足条件的路径结果private val result mutableListOfList()// 记录当前递归路径private val path mutableListOf()fun pathSum(root: TreeNode?, targetSum: Int): ListList {// 每次调用前清空防止多个测试用例互相干扰虽然 LeetCode 每次 new Solution 不需要但养成好习惯result.clear()path.clear()root?.let { dfs(it, targetSum, 0) } return result}/**深度优先搜索DFSparam node 当前遍历的节点param targetSum 目标总和param currentSum 当前路径上的节点值总和*/private fun dfs(node: TreeNode, targetSum: Int, currentSum: Int) {// 1. 将当前节点加入路径并更新当前总和path.add(node.val)val newSum currentSum node.val// 2. 判断是否为叶子节点if (node.left null node.right null) {// 如果是叶子节点且总和满足条件将当前路径的拷贝加入结果集if (newSum targetSum) {result.add(ArrayList(path)) // 关键这里必须新建一个 List 拷贝}} else {// 3. 递归遍历左右子树node.left?.let { dfs(it, targetSum, newSum) }node.right?.let { dfs(it, targetSum, newSum) }}// 4. 回溯离开当前节点将其从路径中移除以便探索其他分支path.removeAt(path.size - 1)}}核心思路解析步骤 说明DFS 遍历 从根节点一直往下走直到叶子节点。路径记录 每访问一个节点就把它的值加入“path” 列表。叶子节点判断 左右子节点都为“null” 时检查“currentSum targetSum”。回溯Backtrack 递归返回前执行“path.removeAt(path.size - 1)”撤销选择。Kotlin 实现中的关键点“ArrayList(path)” 拷贝路径因为“path” 是“MutableList”在回溯过程中会不断被修改。如果直接“result.add(path)”后续修改会影响已存入结果集的数据所以必须创建拷贝。2. 处理 Kotlin 关键字valLeetCode 中 TreeNode 的字段名是“val”而“val” 是 Kotlin 的保留关键字因此访问时必须使用反引号 node.val。3. 空安全“?.let”利用 Kotlin 的“?.let” 可以优雅地处理左右子节点为“null” 的情况避免显式的“if (node.left ! null)” 判断代码更简洁。4. 时间 空间复杂度时间复杂度O(N)每个节点恰好被访问一次。空间复杂度O(N)递归调用栈的深度以及存储路径所需的额外空间。如果你希望看到迭代法使用栈模拟 DFS的 Kotlin 版本或者想对比 Kotlin 与 Rust 在回溯处理上的差异随时告诉我

相关推荐

使用AI编写Qt代码-2:用TaoToken统一Key接入Cline的settings.json配置与验证
使用AI编写Qt代码-2:用TaoToken统一Key接入Cline的settings.json配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:32:56

梁文锋署名,DeepSeek最新公开Agent训练的真正底座:一天撑300万沙箱
梁文锋署名,DeepSeek最新公开Agent训练的真正底座:一天撑300万沙箱

「已支撑V3.2到V4.1训练」 目录 01 Agent沙箱 workload 的7个现实硬约束 02 整体架构:集群管控 节点本地运行时 03 三大核心系统机制,解决生产痛点 3.1 可组合分层环境:干掉单体镜像维护噩梦 3.2 高密度资源管理:… · 2026/9/27 22:32:49

9.24【A】
9.24【A】

磐久UMX:UALink下一代AliSCM,GPU直连的PCM内存池 PCM PCM 是 Phase-Change Memory(相变内存)。它用一种特殊材料在两种状态间切换来存数据:结晶态和非晶态的电阻不同,控制器读取电阻就能判断存的是 0 还是… · 2026/9/27 22:32:49

2026最新支付网站模板避坑指南:告别丑模板,5类方案报价全解析
2026最新支付网站模板避坑指南:告别丑模板,5类方案报价全解析

2026最新支付网站模板避坑指南:告别丑模板,5类方案报价全解析 做过支付业务或者正在筹备上线支付接口的朋友,最怕的就是拿到一个“丑得没法看”且功能残缺的模板。很多甲方老板找供应商,对方甩过来一堆千篇一律的后台截图,前端页面配色像2010年… · 2026/9/27 23:02:22

内容团队如何把干货文章落到实处
内容团队如何把干货文章落到实处

内容团队如何把干货文章落到实处 核心摘要- 截至2025年底,我国规模以上制造业企业人工智能技术应用普及率已较高比例。 - 国家已布局30余个人工智能应用中试基地,推动中央企业、国有企业开放1000余个应用场景。 - 截至2025年12月,我国生成式… · 2026/9/27 23:02:16

3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁
3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁

3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁 同一台设备拍同一个物体,有时模型完整,有时背面塌掉、纹理发糊。把问题全部归到重建算法,通常会错过真正能控制的变量:输入帧是否清晰、视… · 2026/9/27 23:02:03

Java面试被问烂的JVM,这样答直接加分
Java面试被问烂的JVM,这样答直接加分

别背“堆栈方法区”,画一张内存图面试官问内存模型,不是考你记忆力,是考你脑子里有没有一幅图。你可以说:“我习惯把JVM内存想象成一栋楼。程序计数器是每层楼的门牌号,记录线程执行到哪一行;虚拟机栈是每个… · 2026/9/27 23:01:57

2026 年制造业 ERP 的 4 个新变化——老板该知道的,不是技术细节,而是选择逻辑
2026 年制造业 ERP 的 4 个新变化——老板该知道的,不是技术细节,而是选择逻辑

摘要: 制造业 ERP 市场正在发生几个大变化:AI 功能从噱头变成标配、SaaS 模式从小厂专属变成主流选择、国产 ERP 从"平替"变成"优选"、低代码平台让"定制开发"不再天价。这些变化对制造业老板意味着什么?不是&… · 2026/9/27 23:01:57

视频通话弱网测试笔记:用网络损伤仪把上行限到800kbps
视频通话弱网测试笔记:用网络损伤仪把上行限到800kbps

接着前面的选型记录,这篇把网准通 NetAccura ChaosBridge 网络损伤仪的使用方法写具体一点:怎么接线,怎么把视频通话的上行限到800kbps,以及画面卡住以后去哪里找原因。这一轮适合用DPDK引擎,重点是上下行分开设置、队… · 2026/9/27 23:01:57

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码