LeetCode-随机链表的复制

. - 力扣(LeetCode)

 本题思路:

首先注意到随机链表含有random的指针,这个random指针指向是随机的;先一个一个节点的拷贝,并且把拷贝的节点放在拷贝对象的后面,再让拷贝节点的next指向原链表拷贝对象的下一个节点,这样做的目的是实现拷贝节点的插入,即拷贝好的节点都放在原链表两个节点之间;

实现完拷贝节点的插入是为了实现拷贝节点random的指向;如果原链表拷贝对象的random指向为NULL,那么拷贝节点的random指向也置为NULL;若是拷贝对象的random指向不为NULL,那么就让拷贝节点的random指向拷贝对象的random的next,解释为什么要这样:假设现在要实现这个链表中一个拷贝节点的random指向,已知其他拷贝对象的next指向的就是拷贝节点;要实现random指向的这一个节点要找到和它拷贝对象一样的random指向,如何找到?只需要让这个拷贝节点的random指向它自己拷贝对象的random的next,这个被指向的拷贝节点就是原链表中这个要实现random指向的拷贝节点的拷贝对象的的random的next指向的拷贝节点;

最后再进行尾插操作,让拷贝节点形成一条新的链表;并且还原原链表;

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/
typedef struct Node Node;
struct Node* copyRandomList(struct Node* head) {Node* cur=head;Node* next=NULL;Node* copy=NULL;while(cur){next=cur->next;copy=(Node*)malloc(sizeof(Node));copy->next=next;copy->val=cur->val;cur->next=copy;cur=next;}//拷贝节点的插入cur=head;while(cur){copy=cur->next;next=copy->next;if(cur->random==NULL){copy->random=NULL;}else{copy->random=cur->random->next;}cur=next;}拷贝节点random的指向实现cur=head;Node* copyhead,*copytail;copyhead=copytail=(Node*)malloc(sizeof(Node));copyhead->val=-1;copyhead->next=copyhead->random=NULL;while(cur){copy=cur->next;next=copy->next;copytail->next=copy;copytail=copytail->next;cur->next=next;cur=next;}//拷贝节点尾插变成新的要求的链表;还原成原链表Node* rsl=copyhead->next;free(copyhead);copyhead=NULL;return rsl;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3249017.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于QEMU-aarch64学习UEFI(EDK2)-8QEMU固件变量存储

1 基于QEMU-aarch64学习UEFI(EDK2)-8QEMU固件变量存储 文章目录 1 基于QEMU-aarch64学习UEFI(EDK2)-8QEMU固件变量存储1.1 fd固件分析1.2 QEMU_VARS.fd分析1.2.1 QEMU_VARS.fd与QEMU_EFI.fd二合一1.2.2 错误分析1.2.2.1 gEdkiiNvVarStoreFormattedGuid1.2.2.2 SupportFvb1.2.2.…

打破运维“冷门槛“|暴雨液冷数据中心方案再升级

如果将数据比喻为驱动世界运转的新引擎,那数据中心便是为引擎提供源源不断动力的泵站。但随着泵站功率的日益增强,热浪成了不可避免的副产品。如何将数据热能转化为科技动能,是人工智能可持续发展的重要前提。 液冷技术,不仅可实现…

基于Java的在线考试系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java MySQL B/S架构 SpringBoot框架 工具:Eclipse、MySQL环境配置工具 系统展示 首…

Hyper-v创建二代虚拟机无法进入bios问题解决

首先要确定从dvd驱动在上面,如果不在则把它向上移动然后保存。 启动虚拟机会进入下面界面 然后点下最左边的按钮然后疯狂点击f2(有的电脑是fnf2) 就可以顺利进入bios引导界面。

InstaPrism能否平替BayesPrism(贝叶斯棱镜)?

上一期内容提到了BayesPrism算法用于单细胞数据的反卷积,BayesPrism算法在实际应用中非常占用计算资源以及消耗使用者的时间。那么是否有较好的替代包呢? 曾老师告诉了我一个R包—InstaPrism,他希望我将其和BayesPrism算法做个对比。 开发者…

Axure RP移动端医院在线挂号app问诊原型图模板

医疗在线挂号问诊Axure RP原型图医院APP原形模板,是一款原创的医疗类APP,设计尺寸采用iPhone13(375*812px),原型图上加入了仿真手机壳,使得预览效果更加逼真。 本套原型图主要功能有医疗常识科普、医院挂号…

鸿蒙Navigation路由能力汇总

基本使用步骤: 1、新增配置文件router_map: 2、在moudle.json5中添加刚才新增的router_map配置: 3、使用方法: 属性汇总: https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-compone…

mediasoup企业级会议并发方案设计

mediasoup单服务企业级部署方案 网络环境如图 服务器要求: 单个mediasoup稳定支持200-300路流,为了增加服务的并发,在一个服务器上部署5个信令服务及mediasoup服务 单台服务器32核cpu,32G内存,带宽2000M及以上 集群部署方案图…

IDEA SpringBoot实现定时任务(保姆级教程,超详细!!!)

目录 1. 前言 2. 创建SpringBoot项目 3. Maven依赖引入 4. 创建定时任务 5. 问题:执行时间延迟和单线程执行 5.1 问题原因 5.2 解决方式 1. 前言 在现代化应用中,定时任务(Scheduled Tasks)是不可或缺的一部分&#xff…

Linux 07:基础IO

stdin & stdout & stderr C默认会打开三个输入输出流,分别是stdin, stdout, stderr。仔细观察发现,这三个流的类型都是FILE*, fopen返回值类型,文件指针。 文件读取函数(库函数): fopen、fread、…

部分功能的实现和算法

目录 1.雪花算法 2.MD5加密 3.小眼睛显示密码 4.发送验证码 5.倒计时 1.雪花算法 SnowFlake 中文意思为雪花,故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本 雪花算法的原理就是生成一个的 64 位比特…

电力需求预测挑战赛笔记 Task2 Datawhale AI 夏令营

#AI夏令营 #Datawhale #夏令营 Task1文章链接: 电力需求预测挑战赛笔记 Taks1 跑通baseline-CSDN博客文章浏览阅读577次,点赞5次,收藏9次。电力需求预测挑战赛;【训练时序预测模型助力电力需求预测】https://blog.csdn.net/qq_23311271/art…

【数据结构】二叉树———Lesson2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

如何走出低能量状态?

晚上好。 每个人都难免会有状态不佳的时候。可能是遭受压力,可能是事情不顺,也可能无缘无故、突然就陷入情绪的低谷之中。 这时,我们很容易感到精力不济,无精打采,明明有许多事情要做和想做,但总是提不起精…

JavaWeb入门程序解析(Spring官方骨架、配置起步依赖、SpringBoot父工程、内嵌Tomcat)

3.3 入门程序解析 关于web开发的基础知识,我们可以告一段落了。下面呢,我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。 3.3.1 Spring官方骨架 之前我们创建的SpringBoot入门案例,是基于Spring官方提供的骨架实现的。 Sprin…

DevExpress WPF中文教程 - 为项目添加GridControl并将其绑定到数据

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

springboot+vue+mybatis销售评价系统+PPT+论文+讲解+售后

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,销售评价系统当然也不能排除在外。销售评价系统是以实际运用为开发背景,运用软件工程开发方法,采用Java…

Three.js 实战【2】—— 船模型海上场景渲染

停止了好久没有更新three这方面的文章了,从上两年还是vue2,一下子都换到vue3了,下面这些three都是基于vue3来进行开发的哈,先看一下这篇文章实现的效果哈。其中关于模型什么的资源都放在Git上了 初始化场景 安装three就直接通过n…

GuLi商城-商品服务-API-品牌管理-品牌分类关联与级联更新

先配置mybatis分页: 品牌管理增加模糊查询: 品牌管理关联分类: 一个品牌可以有多个分类 一个分类也可以有多个品牌 多对多的关系,用中间表 涉及的类: 方法都比较简单,就不贴代码了

000007 - HDFS DataNode

HDFS DataNode 1. DataNode工作机制2. DataNode的数据完整性3. 掉线时限参数设置 1. DataNode工作机制 (1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度…