论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
职场与人生
›
IT职场那些事
›
leetcode138.随机链表的复制
leetcode138.随机链表的复制
泉缘泉
论坛元老
|
2025-4-19 23:00:49
|
显示全部楼层
|
阅读模式
楼主
主题
1855
|
帖子
1855
|
积分
5575
随机链表的复制
问题分析
链表中的每个节点包罗三个属性:val(节点的值),next(指向下一个节点的指针),以及random(一个随机指针,可以指向链表中的任意节点,大概为NULL)。我们的目标是创建一个新的链表,其中每个节点的值与原链表中相应节点的值雷同,并且新链表中的next和random指针也正确地指向新链表中的节点。
算法分为三个主要步调:
1. 复制节点并插入到原节点后面:
◦ 遍历原链表,为每个节点创建一个副本,并将副本插入到原节点的后面。
◦ 这一步确保了每个原节点和其副本节点相邻,便于后续设置next和random指针。
2. 复制随机指针:
◦ 再次遍历链表,这次是为了复制每个副本节点的random指针。
◦ 由于副本节点紧跟在原节点之后,原节点的random指针指向的节点的下一个节点就是副本节点的random指针应该指向的节点。
3. 分离原链表和新链表:
◦ 遍历链表,将每个副本节点从原链表中分离出来,形成一个新的链表。
◦ 利用尾插法构建新链表,这样可以克制在构建新链表时破坏原链表的结构。
代码实现
代码实现遵循上述算法设计,具体步调如下:
1. 初始化指针和变量:
◦ 利用cur指针遍历原链表。
◦ 利用copyHead和copyTail指针来构建和维护新链表。
2. 复制节点:
◦ 为每个节点创建副本,并将其插入到原节点之后。
◦ 更新cur指针以继续遍历。
3. 复制随机指针:
◦ 再次遍历链表,为每个副本节点设置random指针。
◦ 更新cur指针以继续遍历。
4. 分离链表:
◦ 遍历链表,将副本节点从原链表中分离出来,并构建新链表。
◦ 利用尾插法将副本节点添加到新链表中。
5. 返回新链表的头节点:
◦ 返回copyHead,即新链表的头节点
class
Solution {
public
:
Node* copyRandomList(Node* head) {
// 1.拷贝链表,并插入到原节点的后面
Node* cur = head;
while(cur)
{
Node* next = cur->next;
Node* copy = (Node*)malloc(sizeof(Node));
copy->val = cur->val;
// 插入
cur->next = copy;
copy->next = next;
// 迭代往下走
cur = next;
}
// 2.置拷贝节点的random
cur = head;
while(cur)
{
Node* copy = cur->next;
if(cur->random != NULL)
copy->random = cur->random->next;
else
copy->random = NULL;
cur = copy->next; }
// 3.解拷贝节点,链接拷贝节点
Node* copyHead = NULL, *copyTail = NULL;
cur = head;
while(cur)
{
Node* copy = cur->next;
Node* next = copy->next;
// copy解下来尾插
if(copyTail == NULL)
{
copyHead = copyTail = copy;
}
else
{
copyTail->next = copy;
copyTail = copy;
}
cur->next = next;
cur = next;
}
return copyHead;
}
};
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
泉缘泉
论坛元老
这个人很懒什么都没写!
楼主热帖
华为一镜到底主题__荣耀30系列安装教程 ...
日志模块
「Docker入门指北」容器很难理解?带你 ...
数据资产为王,如何解析企业数字化转型 ...
信创环境下分布式文件存储MinIO集群部 ...
28基于java的简单酒店数据管理 ...
Vulnhub之M87靶机详细测试过程(不同提 ...
xss-labs靶场
从入门到一位合格的爬虫师,这几点很重 ...
解决NuGet加载或下载资源慢的问题 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
分布式数据库
快速回复
返回顶部
返回列表