leetcode如何实现复制带随机指针的链表
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,小编给大家分享一下leetcode如何实现复制带随机指针的链表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!给定一个链表,
千家信息网最后更新 2025年02月05日leetcode如何实现复制带随机指针的链表
小编给大家分享一下leetcode如何实现复制带随机指针的链表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。
要求返回这个链表的深拷贝。
示例:
输入:
{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}
解释:
节点 1 的值是 1,它的下一个指针和随机指针都指向节点 2 。
节点 2 的值是 2,它的下一个指针指向 null,随机指针指向它自己。
提示:
你必须返回给定头的拷贝作为对克隆列表的引用。
解题技巧:
1,因为random指针的存在,所以copy的时候如何定位random是个问题,所以简单方法在原链表每个位置后面插入一个元素。
2,由于random可能指向前面的指针,所以复制完之前不能拆解
3,注意边界条件,对于指针类题目,一定要判断空情况
/*
// Definition for a Node.
class Node {
public:
int val;
Node* next;
Node* random;
Node() {}
Node(int _val, Node* _next, Node* _random) {
val = _val;
next = _next;
random = _random;
}
};
*/
class Solution {
public:
Node* copyRandomList(Node* head) {
Node* h=NULL;
Node* t=NULL;
Node* cur=NULL;
cur=head;
while(cur!=NULL){
t=cur->next;
cur->next=new Node(cur->val,t,NULL);
cur=t;
}
cur=head;
if (cur==NULL){
return NULL;
}
h=cur->next;
t=h;
while(cur!=NULL){
if (cur->random!=NULL){
t->random=cur->random->next;
}
cur=t->next;
if (cur!=NULL){
t=cur->next;
}
}
cur=head;
h=cur->next;
t=h;
while(cur!=NULL){
cur->next=t->next;
cur=cur->next;
if (cur!=NULL){
t->next=cur->next;
t=t->next;
}
}
return h;
}
};
以上是"leetcode如何实现复制带随机指针的链表"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
指针
节点
指向
篇文章
内容
拷贝
不怎么
位置
元素
大部分
情况
技巧
方法
时候
更多
条件
知识
示例
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
达州网络技术发展
服务器安全教育平台
可以共享数据库的办公软件
网络安全意识观后感心得
舜宇集团软件开发
软件开发真实照片
vc逐条读取数据库
计算机网络技术手册
数据库中的索引创建
邢台软件开发培训班哪个好
三星软件开发文档
单节点数据库升级rac
虹口区新时代网络技术设计
JSP登录验证连接数据库
数据库仪器仪表平台
智能家居隐藏网络安全
香港算是国外服务器吗
网络技术学习图书
软件开发普及
施工项目管理软件开发多少钱
北京名贸汇网络技术有限公司
国内网络技术龙头
java语言软件开发大学
xp dhcp服务器设置
斯伦贝谢软件开发公司
爱立信基带软件开发
阿里云服务器tcp
电脑登录服务器
网络安全服务行业面对的威胁
船上数据存储服务器功率