新闻详情

新闻详情

首页 / 资讯中心 / 详情

DeepSeek LeetCode 138.随机链表的复制 Golang实现

发布时间:2026/10/2 13:56:13来源:尧图网络
DeepSeek    LeetCode 138.随机链表的复制 Golang实现
LeetCode 138. 随机链表的复制 — Go 实现节点定义typeNodestruct{ValintNext*Node Random*Node}解法一哈希表 两趟遍历推荐第一趟建立 原节点 - 新节点 的映射第二趟连接 Next 和 Random。funccopyRandomList(head*Node)*Node{ifheadnil{returnnil}// 原节点 - 新节点m:make(map[*Node]*Node)// 第一趟只拷贝值建立映射forcur:head;cur!nil;curcur.Next{m[cur]Node{Val:cur.Val}}// 第二趟连接 Next 和 Randomforcur:head;cur!nil;curcur.Next{ifcur.Next!nil{m[cur].Nextm[cur.Next]}ifcur.Random!nil{m[cur].Randomm[cur.Random]}}returnm[head]}要点· map[*Node]*Node 用原节点指针作为 key天然唯一。· 先建映射再连指针避免 Random 指向尚未创建的节点。复杂度 时间 O(n)空间 O(n)。解法二交错法O(1) 额外空间把新节点插在原节点后面A - A’ - B - B’ - …然后修 Random最后拆开。funccopyRandomList(head*Node)*Node{ifheadnil{returnnil}// 1. 在每个原节点后面插入拷贝节点forcur:head;cur!nil;{next:cur.Next cur.NextNode{Val:cur.Val,Next:next}curnext}// 2. 设置拷贝节点的 Randomforcur:head;cur!nil;curcur.Next.Next{ifcur.Random!nil{cur.Next.Randomcur.Random.Next}}// 3. 拆分原链表和拷贝链表dummy:Node{}copyCur:dummyforcur:head;cur!nil;{next:cur.Next.Next copyCur.Nextcur.Next copyCurcopyCur.Next cur.Nextnext curnext}returndummy.Next}要点· cur.Next 是拷贝节点cur.Next.Next 是下一个原节点。· cur.Random.Next 正好是 cur.Random 对应的拷贝节点。· 最后拆分时必须恢复原链表的 Next否则会破坏输入。复杂度 时间 O(n)空间 O(1)。测试示例funcmain(){n1:Node{Val:7}n2:Node{Val:13}n3:Node{Val:11}n1.Nextn2 n2.Nextn3 n1.Randomniln2.Randomn1 n3.Randomn2copy:copyRandomList(n1)// 验证值fmt.Println(copy.Val)// 7fmt.Println(copy.Next.Val)// 13fmt.Println(copy.Next.Next.Val)// 11// 验证 Random 指向拷贝链表中的节点而非原节点fmt.Println(copy.Next.Randomcopy)// truefmt.Println(copy.Next.Next.Randomcopy.Next)// true}两种解法都可通过面试中写哈希表版最稳如果要求 O(1) 空间再写交错法。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ViewPager与Fragment生命周期不协调?从预加载机制到可见性判断的根治方案 2026/10/2 14:34:25

ViewPager与Fragment生命周期不协调?从预加载机制到可见性判断的根治方案

做安卓开发的,几乎没有人能绕开 ViewPager 和 Fragment 这对组合。刚入门的时候觉得页面滑动很炫,配着 Fragment 做 Tab 切换特别顺手,可一旦业务复杂起来,问题就来了:明明已经滑到了第二个页面,第一个页面…

阅读更多 →
基于POI-TL实现动态Word模板填充与图表生成实战 2026/10/2 14:34:04

基于POI-TL实现动态Word模板填充与图表生成实战

接到一个需求,要把系统里的业务数据按指定格式导出成Word报告,里面要有列表、图片、表格,还得带可视化图表。一开始想用POI直接手写,写了一半就放弃了——表格格式、单元格合并、段落缩进、页码这些都要自己用代码控制&#xff0c…

阅读更多 →
手写数学运算识别系统源码解析:从数据合成到模型部署 2026/10/2 14:34:04

手写数学运算识别系统源码解析:从数据合成到模型部署

简介:基于Python的手写数学运算识别系统源码,适用于计算机视觉、机器学习方向的毕业设计及课程实践。项目以手写数学表达式为处理对象,实现从图像预处理、特征提取到模型训练、字符分类与表达式解析的完整流程,输出结果支持LaTeX代…

阅读更多 →
手写数学运算识别系统:Python源码实现与工程落地方案 2026/10/2 14:34:04

手写数学运算识别系统:Python源码实现与工程落地方案

简介:这是一份基于Python的手写数学运算识别系统源码包,面向毕业设计及计算机视觉、机器学习初学者。项目完整覆盖图像灰度化、二值化、去噪等预处理流程,并结合HOG特征提取、SVM/随机森林/CNN分类器训练,以及数学表达式解析与结果…

阅读更多 →
MySQL DML技术详解:从增删改到事务与误操作恢复 2026/10/2 14:34:04

MySQL DML技术详解:从增删改到事务与误操作恢复

1. 认识DML:增删改到底是什么,为什么它才是数据库操作的主战场先说个可能颠覆认知的结论:很多初学者学MySQL时,把大量精力花在DDL(建表语句)上,觉得创建表、修改字段才是重点。但真实项目里&…

阅读更多 →
Python+Flask打造Web项目管理信息系统:从设计到部署实战 2026/10/2 14:33:51

Python+Flask打造Web项目管理信息系统:从设计到部署实战

简介:基于Python实现的Web项目管理信息系统,面向计算机相关专业课程设计及信息系统实践场景,提供完整项目方案与配套资料。系统涵盖项目与任务管理、通知管理、系统管理等核心功能,数据设计部分对实体关系和功能点进行了详细梳理&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉