news 2026/5/15 16:59:56

LeetCode热题100-随机链表的复制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100-随机链表的复制

给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。

构造这个链表的深拷贝。 深拷贝应该正好由n全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点

例如,如果原链表中有XY两个节点,其中X.random --> Y。那么在复制链表中对应的两个节点xy,同样有x.random --> y

返回复制链表的头节点。

用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:

  • val:一个表示Node.val的整数。
  • random_index:随机指针指向的节点索引(范围从0n-1);如果不指向任何节点,则为null

你的代码接受原链表的头节点head作为传入参数。

示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

这里一定需要深拷贝,不要前拷贝,通过哈希表进行复制。

核心思想

  1. 第一遍遍历:把所有旧节点 → 新节点 存到 map 里
  2. 第二遍遍历:给新节点设置 next 和 random
class Solution: def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]': if not head: return None mapping = {} cur = head while cur: mapping[cur] = Node(cur.val, None, None) cur = cur.next cur = head while cur: mapping[cur].next = mapping.get(cur.next) mapping[cur].random = mapping.get(cur.random) cur = cur.next return mapping[head]
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 11:57:19

小满nestjs(第二十五章 NestJS ORM实战:TypeORM连接MySQL与实体映射)

1. TypeORM连接MySQL的完整配置指南 第一次在NestJS项目中使用TypeORM连接MySQL时,我踩了不少坑。记得当时因为一个简单的端口配置错误,折腾了大半天才成功连接。现在回想起来,其实只要掌握几个关键配置项,整个过程可以非常顺畅。…

作者头像 李华
网站建设 2026/5/15 16:59:30

3种高效转换方案:stltostp工具的工业级STL到STEP转换完全指南

3种高效转换方案:stltostp工具的工业级STL到STEP转换完全指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在三维设计与制造的数字工作流中,工程师们面临着一个普遍的…

作者头像 李华
网站建设 2026/5/13 11:57:05

STM32F103 TIM3四路PWM驱动舵机与LED调光实战:一份代码搞定两种应用

STM32F103 TIM3四路PWM驱动舵机与LED调光实战:一份代码搞定两种应用 在嵌入式开发中,PWM(脉冲宽度调制)技术是实现电机控制、LED调光等功能的基石。STM32F103系列微控制器内置的定时器模块,特别是TIM3定时器&#xff0…

作者头像 李华
网站建设 2026/5/13 11:54:14

终极中文汉化方案:PowerToys-CN让你的Windows效率工具真正说中文

终极中文汉化方案:PowerToys-CN让你的Windows效率工具真正说中文 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 还在为PowerToys满屏的英文界…

作者头像 李华
网站建设 2026/5/13 11:52:13

ArcGIS Pro实战:用30米DEM数据快速搞定RUSLE模型中的LS因子计算

ArcGIS Pro实战:30米DEM数据高效计算RUSLE模型LS因子全流程解析 当我们需要评估土壤侵蚀风险时,RUSLE(修正通用土壤流失方程)模型中的LS因子(坡长坡度因子)计算是关键环节。传统ArcMap在处理大规模DEM数据时…

作者头像 李华
网站建设 2026/5/13 11:51:08

FABRK全栈框架:模块化架构与AI原生开发实践

1. 从生产级样板到全栈框架:FABRK 的诞生与设计哲学如果你和我一样,在过去几年里反复构建过多个 SaaS 应用,那你一定对那种“重复造轮子”的疲惫感深有体会。每次新项目启动,都要重新搭建一遍身份验证、支付集成、仪表盘布局、数据…

作者头像 李华