news 2026/7/15 15:41:50

链表掌握九成?这题能独立完成吗

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
链表掌握九成?这题能独立完成吗

若能独立完成本题的思路构建与代码实现,说明你对链表的理解已掌握九成。建议先自行尝试解题(题目链接见下图),以检验掌握程度。若遇到困难,可参考本文提供的详细思路解析和代码实现(采用C语言)。

随机链表的复制

链接:https://leetcode.cn/problems/copy-list-with-random-pointer

本题难点在于如何拷贝randon,怎样才能找到拷贝链表和原链表的关联。

解题思路:

此题可以分三步进行:

1.拷贝链表的每一个节点,拷贝的节点先链接到被拷贝节点的后面

节点复制阶段遍历原始链表,为每个节点创建拷贝节点,将拷贝节点插入到原始节点之后。例如原始链表为A->B->C,复制后变为A->A'->B->B'->C->C'。这样我们就将拷贝链表和原链表关联起来,对我们后续找链表里的数据至关重要。

2.复制随机指针的链接:拷贝节点的随机指针指向被拷贝节点随机指针的下一个位置

随机指针设置阶段再次遍历链表,处理每个拷贝节点的random指针。由于第一步我们将拷贝节点和原连接起来,变成A->A'->B->B'->C->C'。由图我们可以看出节点原始节点的random指针指向的节点的下一个节点即为拷贝节点应该指向的位置。若原始节点的random为NULL,拷贝节点的random也设为NULL。

3.拆解链表,把拷贝的链表从原链表中拆解出来

链表拆分阶段创建拷贝链表的头指针和尾指针,通过遍历将拷贝节点从交错链表中提取出来,同时恢复原始链表的连接关系。每次处理将拷贝节点接入拷贝链表尾部,并移动原始链表的当前指针。最终返回副本链表的头节点。

该算法时间复杂度为O(n),空间复杂度为O(1)(不计入返回的深拷贝链表所需空间),通过巧妙地利用节点交错排列避免了哈希表的额外空间开销。

代码实现:

struct Node* copyRandomList(struct Node* head) { /* 解题步骤: 1. 为每个节点创建副本,插入到原节点之后 2. 设置副本节点的random指针 3. 分离原链表和副本链表 */ struct Node* cur = head; // 第一步:创建并插入副本节点 while(cur) { struct Node* copy = (struct Node*)malloc(sizeof(struct Node)); copy->val = cur->val; copy->next = cur->next; cur->next = copy; cur = copy->next; } // 第二步:设置副本节点的random指针 cur = head; while(cur) { struct Node* copy = cur->next; copy->random = cur->random ? cur->random->next : NULL; cur = copy->next; } // 第三步:分离两个链表 cur = head; struct Node* copyhead = NULL, *copytail = NULL; while(cur) { struct Node* copy = cur->next; cur->next = copy->next; if(!copytail) { copyhead = copytail = copy; } else { copytail->next = copy; copytail = copy; } cur = cur->next; } return copyhead; }

如果对你有帮助别忘了一键三连,制作不易谢谢支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 0:15:57

Windows系统文件MFC71CHT.DLL缺失损坏 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/7/15 1:30:52

如何快速修复洛雪音乐音源问题:新手友好型完整指南

如何快速修复洛雪音乐音源问题:新手友好型完整指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 你是否也遇到了洛雪音乐升级到1.6.0版本后,六音音源突然失效的困扰&…

作者头像 李华
网站建设 2026/7/15 0:10:48

网盘直链高速下载神器:告别限速烦恼的终极方案

你是不是也曾经为了下载一个大文件而不得不安装各种网盘客户端?😫 是不是经常遇到下载速度被限制在几十KB的尴尬境地?别担心,网盘直链下载助手就是为你量身打造的解决方案!这款免费开源的浏览器扩展工具能够将网盘链接…

作者头像 李华
网站建设 2026/7/15 13:21:04

洛雪音乐六音音源终极修复指南:5分钟搞定完整配置

洛雪音乐六音音源终极修复指南:5分钟搞定完整配置 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后六音音源失效而烦恼吗?别担心!这份终极…

作者头像 李华
网站建设 2026/7/14 16:12:20

一加15T爆料:配备6.3英寸显示屏、骁龙8精英版第5代SoC及7000mAh电池

一加15T爆料:配备6.3英寸显示屏、骁龙8精英版第5代SoC及7000mAh电池 一加15T爆料信息现身网络 据悉一加正计划扩充其旗舰15系列产品线,推出一款小巧但性能强劲的新智能手机,可能命名为一加15T。最新爆料显示,该设备将以更小尺寸提…

作者头像 李华