千问 LeetCode 24.两两交换链表中的节点 Rust实现

发布时间:2026/10/26 21:35:05

千问    LeetCode 24.两两交换链表中的节点 Rust实现 LeetCode 24 两两交换链表中的节点在 Rust 中实现的核心难点在于所有权与借用检查必须频繁使用 Option::take() 转移节点所有权来操作指针。以下提供两种主流解法解法一迭代法虚拟头节点 take这是最经典的写法思路与 C/Java 一致通过 take() 解决所有权问题。impl Solution {pub fn swap_pairs(head: OptionBox) - OptionBox {let mut dummy Box::new(ListNode { val: 0, next: head });let mut cur mut dummy;while let Some(mut node1) cur.next.take() { // 如果只有一个节点无法配对直接放回并退出 let Some(mut node2) node1.next.take() else { cur.next Some(node1); break; }; // 暂存下一轮的起始节点 let node3 node2.next.take(); // 执行交换node1 - node3, node2 - node1 node1.next node3; node2.next Some(node1); cur.next Some(node2); // cur 前进两步到达下一组待交换节点的前一个位置 cur cur.next.as_mut().unwrap().next.as_mut().unwrap(); } dummy.next }}执行流程以 [1,2,3,4] 为例初始dummy - 1 - 2 - 3 - 4第一轮交换take() 取出 node11, node22, node33-4重连node1.next 3-4, node2.next 1dummy - 2 - 1 - 3 - 4cur 前进到 node1(值为1)的位置第二轮交换take() 取出 node13, node24, node3None重连node1.next None, node2.next 3dummy - 2 - 1 - 4 - 3返回 dummy.next [2,1,4,3] ✅解法二直接操作引用无需虚拟头节点这种写法更简洁直接对 head 的可变引用进行操作省去了虚拟头节点。impl Solution {pub fn swap_pairs(mut head: OptionBox) - OptionBox {let mut current mut head;loop { match current { None break, Some(current_node) { match current_node.next.take() { None break, Some(mut next_node) { // 重新连接指针 current_node.next next_node.next.take(); next_node.next current.take(); *current Some(next_node); // 前进两步 current mut current.as_mut() .unwrap().next.as_mut() .unwrap().next; } } } } } head }}两种解法对比维度 解法一虚拟头节点 解法二直接引用代码量 稍多 更简洁可读性 逻辑清晰易于理解 需要理解 take() 引用的配合时间复杂度 O(n) O(n)空间复杂度 O(1) O(1)Rust 链表题的关键技巧Option::take()将 Option 中的值取出原位留下 None。这是 Rust 链表操作的核心本质是所有权转移——因为节点的 next 字段拥有下一个节点的所有权要重新连接指针就必须先 take() 出来。as_mut().unwrap()获取 Option 内部值的可变引用用于继续遍历和修改。虚拟头节点统一处理交换头两个节点和交换后续节点的逻辑避免单独处理边界条件。掌握 take() 的用法Rust 链表题就成功了一大半。要不要顺带看看递归写法Rust 里递归处理链表和迭代思路差别挺明显的。
延伸阅读

更多相关文章

2026/10/25 1:32:31

基于Python与dlib的人脸识别系统:从原理到实现的完整课设指南

简介:本资源是一套面向高校Python课程设计的完整人脸识别系统实现,适用于计算机、人工智能及相关专业本科生开展实践项目与课程考核。基于dlib库构建,涵盖人脸检测、关键点定位、128维特征提取与比对识别全流程,代码经过本地编译验…

2026/10/24 8:54:21

2026国家自然科学基金结果公布:69563项获资助(附207家医院名单)

2026年8月26日,国家自然科学基金委员会正式发布《关于2026年国家自然科学基金集中接收申请项目评审结果的通告》,备受关注的2026年度国自然“放榜”正式落地。本文结合基金委官方通告与公开数据,梳理本次放榜的整体情况与全国部分医院立项情况…

2026/10/24 2:49:25

GNSS/IMU/Camera紧耦合融合定位原理与工程实践

简介:本资源是一个基于C实现的多源传感器融合定位系统,面向自动驾驶、高精度导航与机器人定位领域的开发者与研究者,聚焦GNSS(含大气增强PPP)、MEMS级IMU与单目视觉里程计(VO)的紧耦合融合算法研…

2026/10/26 21:31:51

Windows文件备份的三层防御方案:本地快照+远程加密归档

1. 项目概述:为什么“完美”二字在Windows文件备份里如此稀缺?“Windows平台完美的文件备份方案”——这个标题里最值得推敲的,不是“备份”,而是“完美”。我干这行十多年,经手过上百个真实用户的崩溃现场&#xff1a…

2026/10/26 21:31:51

薄壳结构局部夹紧力设计:解析定界与有限元复核

简介:水下半埋状态实验鱼雷的打捞长期受制于夹紧力与壳体承载能力间的矛盾。这篇2006年的学术论文以捞雷具夹紧机构为研究对象,依据实际工况初步确定油缸推力等关键参数,随后利用薄壳强度理论计算鱼雷壳体的强度与稳定性,验证夹紧…

2026/10/26 21:31:51

华为云ModelArts新手避坑指南:OBS权限、镜像版本与部署校验链

1. 这不是“云上点点点”——ModelArts对新手的真实门槛在哪? 很多人看到“华为云ModelArts模型训练与部署:零基础考点精讲”这个标题,第一反应是:“哦,又一个教你怎么在网页上拖拽几个模块、点几下‘启动训练’就完事…

2026/10/26 21:31:51

KV Cache本质:大模型推理的算力压缩器而非缓存

1. KV Cache不是“缓存”而是推理阶段的算力压缩器 你第一次看到“KV Cache”这个词,大概率是在某篇大模型推理优化文章里,配图是一张Transformer Decoder层里Attention模块旁多出来的两个小方块,标着K和V。很多人下意识把它理解成“把K和V存…

2026/10/26 21:31:51

YOLO系列版本演进与工程部署实战:从v1到v12选型指南

YOLO系列我从 v1 一路用到现在的 v12,包括中间那些小版本和分支模型。前阵子有位朋友问我:现在项目选型到底该用哪个版本?这一下把我问住了,因为放在三年前我会毫不犹豫说 YOLOv5,放在两年前我会推荐 YOLOv8&#xff0…

2026/10/26 21:26:48

AI文化适配:突破西方中心主义的技术重构

1. 项目概述:AI认知觉醒的范式重构当AlphaGo击败李世石时,我们看到的不仅是算法的胜利,更是一种思维范式的碰撞。当前AI发展正面临一个根本性困境:西方中心主义的技术路线主导着全球人工智能研发方向,这导致算法设计、…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑