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

元宝 LeetCode 113.路径总和 || rust实现

发布时间:2026/9/26 17:37:54 来源:云帆数科 栏目:资讯中心
元宝    LeetCode 113.路径总和 || rust实现
LeetCode 113Path Sum II是一道经典的 深度优先搜索DFS 回溯 题目。解题思路从根节点开始遍历用一个“path” 动态记录从根到当前节点的路径。用“current_sum” 记录当前路径上节点值的总和。当遇到叶子节点时检查路径总和是否等于“targetSum”。如果相等将当前“path” 的拷贝加入结果集。回溯在递归返回前将当前节点从“path” 中弹出以便探索其他分支。Rust 实现代码在 LeetCode 中“TreeNode” 通常定义为“OptionRcRefCell”。以下是可以直接提交的完整代码// 假设 LeetCode 已提供 TreeNode 的定义// #[derive(Debug, PartialEq, Eq)]// pub struct TreeNode {// pub val: i32,// pub left: OptionRcRefCell,// pub right: OptionRcRefCell,// }// impl TreeNode {// #[inline]// pub fn new(val: i32) - Self { … }// }use std::rc::Rc;use std::cell::RefCell;impl Solution {pub fn path_sum(root: OptionRcRefCell, target_sum: i32) - VecVec {let mut result: VecVec Vec::new();let mut path: Vec Vec::new();if let Some(node) root { Solution::dfs(node, target_sum, 0, mut path, mut result); } result } // 深度优先搜索 fn dfs( node: RcRefCellTreeNode, target_sum: i32, current_sum: i32, path: mut Veci32, result: mut VecVeci32 ) { // 取出当前节点的值并加入路径 let val node.borrow().val; path.push(val); let new_sum current_sum val; // 先克隆左右子节点的引用避免持有 borrow 导致递归时 panic let left node.borrow().left.clone(); let right node.borrow().right.clone(); // 判断是否为叶子节点 if left.is_none() right.is_none() { if new_sum target_sum { // 找到一条合法路径克隆当前路径存入结果 result.push(path.clone()); } } else { // 递归遍历左右子树 if let Some(left_node) left { Solution::dfs(left_node, target_sum, new_sum, path, result); } if let Some(right_node) right { Solution::dfs(right_node, target_sum, new_sum, path, result); } } // 回溯离开当前节点将其从路径中移除 path.pop(); }}关键点解析Rust 特性“RcRefCell” 的使用LeetCode 的树节点使用“Rc”引用计数允许多个所有者“RefCell” 提供内部可变性。在递归前通过“.clone()” 获取左右子节点的“OptionRc…”这样不会长期持有“RefCell” 的借用避免运行时 panic。回溯与所有权“path” 通过“mut Vec” 传递在递归前后分别执行“push” 和“pop”手动维护路径状态。“result.push(path.clone())” 这里必须“clone”因为“path” 后续还会被修改。3. 效率时间复杂度O(N)每个节点访问一次。空间复杂度O(N)递归栈深度及存储路径所需的空间。如果你希望改成迭代法使用显式栈或者想了解如何处理 i32 溢出等边界情况也可以告诉我

相关推荐

PCIe 高速串行点对点总线完全解析
PCIe 高速串行点对点总线完全解析

目录 一、基本原理 为什么用串行取代并行 点对点拓扑 二、物理与逻辑结构 Lane(通道) 分层模型 各代速率对照 三、关键流程 1. 链路训练(LTSSM) 2. 枚举与配置(Enumeration) 3. 数据传输&#xf… · 2026/9/26 17:37:54

爆改 Gemini-CLI 配置:用 DeepSeek 跑同款命令行 Agent 的 settings.json 骨架
爆改 Gemini-CLI 配置:用 DeepSeek 跑同款命令行 Agent 的 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/26 17:37:38

2026硬核测评:5款主流AI简历匹配工具横评,TaoToken统一Key接入ATS关键词暴击实战
2026硬核测评:5款主流AI简历匹配工具横评,TaoToken统一Key接入ATS关键词暴击实战

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

纯CSS3实现发光渐变Loading动画:原理拆解与性能优化实践
纯CSS3实现发光渐变Loading动画:原理拆解与性能优化实践

简介:纯CSS3网页加载动画源码包,面向前端初学者与网页设计者,为页面加载环节增添科技感视觉反馈,解决等待页枯燥乏味、缺乏动态引导的问题,全程不依赖JavaScript或其他库。压缩包共2个文件:1个HTML页面负责… · 2026/9/26 18:12:07

用Flask+Vue打造宠物成长监管系统:数据模型与前后端分离实战
用Flask+Vue打造宠物成长监管系统:数据模型与前后端分离实战

先交代一下背景。我家那只布偶猫刚接回来的时候才两个多月,当时的体重、疫苗时间、驱虫周期全靠手机备忘录硬记,相册里翻照片才知道它什么时候变圆了不少。后来和几个养猫养狗的朋友一聊,发现大家都有类似的困扰:宠物从小到大变化… · 2026/9/26 18:12:07

豆包+OriginPro自动化绘图:自然语言驱动科研图表生成
豆包+OriginPro自动化绘图:自然语言驱动科研图表生成

1. 豆包与Origin的“跨界联姻”:不是AI绘图,而是自动化工作流的真实切口最近在几个技术交流群里频繁看到有人问:“豆包能连Origin吗?”“有没有办法让豆包自动画Origin图?”——这问题乍一听像科幻片桥段,但… · 2026/9/26 18:11:54

BootCamp 6.1.6660:Intel Mac 运行 Windows 11 的驱动基线校准指南
BootCamp 6.1.6660:Intel Mac 运行 Windows 11 的驱动基线校准指南

简介:本资源是苹果官方BootCamp 6.1.6660版本的完整Windows支持软件包,专为2016款MacBook Pro(含Touch Bar与非Touch Bar型号)设计,面向需在Mac上稳定安装并运行Windows系统的开发者、设计师及双系统用户,解… · 2026/9/26 18:11:54

Atlas 300V 24G 部署 YOLOv5 推理实战:从环境搭建到性能调优
Atlas 300V 24G 部署 YOLOv5 推理实战:从环境搭建到性能调优

Atlas 最近在部署圈出现的频率越来越高,尤其是“Atlas 300V 24G”这块卡,后台和群里好几个兄弟都在问:它到底是不是运算加速卡?能不能拿来跑 YOLO?部署起来麻不麻烦?我正好最近用手里的 Atlas 300V 24G 完整… · 2026/9/26 18:11:48

88万篇文本实测:AI改稿同质化与保住人味的实操方法
88万篇文本实测:AI改稿同质化与保住人味的实操方法

1. 88万篇文本背后,我看到的不是效率革命第一次看到“88万篇文本实测”这个数字的时候,我正坐在电脑前改一份拖了三天的稿子。说实话,第一反应是羡慕——88万篇,哪怕每篇只花十分钟,那也是十几万小时的产出。但紧接着往… · 2026/9/26 18:11:41

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

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

企业微信二维码