【LeetCode】剑指 Offer(18)

news/2024/11/27 5:39:21/

目录

题目:剑指 Offer 35. 复杂链表的复制 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 35. 复杂链表的复制 - 力扣(Leetcode)

题目的接口:

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/
class Solution {
public:Node* copyRandomList(Node* head) {}
};

解题思路:

一开始先判断一下链表是否为空,

如果为空,直接返回空就行。

接下来是思路:

我的思路是通过原链表再复制一个链表:

 所以我们的第一步就是循环创建一个链表,

接在原链表上,如上图,

然后,

第二步是将原链表的random指针同样复制到新的链表上,

(改random的图我懒得画了,如果感兴趣可以自己画一画)

最后一步就是将新的链表独立出来,

再让原链表恢复,如下图:

 最后再返回新的链表的头结点即可。

代码如下:

代码:

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/
class Solution {
public:Node* copyRandomList(Node* head) {//判断链表是否为空if(!head){return nullptr;}//复制原链表Node* cur = head;while(cur){//new一个新节点,并初始化valNode* copy = new Node(cur->val);copy->next = cur->next;cur->next = copy;cur = copy->next;}//复制原链表的指针cur = head;while(cur){//如果randam是指向空指针就不用管(因为原本就是空)if(cur->random){cur->next->random = cur->random->next;}cur = cur->next->next;}//将原链表还原,将新链表独立出来Node* newhead = head->next;Node* prev = head;cur = newhead;while(cur->next){//还原原链表prev->next = prev->next->next;prev = prev->next;//独立新链表cur->next = cur->next->next;cur = cur->next;}//新链表的尾prev->next = nullptr;//返回新链表的头return newhead;}
};

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。


http://www.ppmy.cn/news/31169.html

相关文章

JAVA中比较对象是否相等的方式是什么?为什么重写equals就一定要重写hashcode?百天百题(3/100)

目录 JAVA中比较对象是否相等的方式是什么? 为什么重写equals就一定要重写hashcode? JAVA中比较对象是否相等的方式是什么? 在了解这个问题之前需要先知道: 1.如果对象相同,那么hashcode是一定相同的。 2.对象不同的…

【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法

文章目录熟悉Python懂R语言掌握SQL大数据基础数据库常用类型多表查询更多聚合函数distinctcase when窗口函数动态更新一行变多行调优内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第四章编程技能考查熟悉Python 懂R语言 掌握SQL 大数据基础 Hive时Hadoop的一个…

2023实习面试公司【三】

2023实习面试第三家公司 文章目录2023实习面试第三家公司前言一、面试官所问的问题?一面:二面:三面:二、总结1.公司待遇2.推荐指数3.自己的感受前言 某宇科技,这家公司是我从boss上找的一家面试公司,不过这…

YOLOv7、YOLOv5改进之打印热力图可视化:适用于自定义模型,丰富实验数据

💡该教程为改进YOLO高阶指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 唐宇迪老师联袂推荐🏆 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可�…

盘点曾经很火但消失了的8个软件

目录 1、飞信 3、暴风影音 4、千千静听 5、虾米音乐 6、快车下载 7、人人网 8、QQ农场 今天小编给大家分享曾经很火但消失了的8个软件,你都用过吗? 1、飞信 飞信是中国移动通信集团公司推出的一款短信、语音、视频通信应用程序。它于2007年推出&a…

内卷把同事逼成了“扫地僧”,把Git上所有面试题整理成足足24W字Java八股文

互联网大厂更多的是看重学历还是技术?毫无疑问,是技术,技术水平相近的情况下,肯定学历高/好的会优先一点,这点大家肯定都理解。说实话,学弟学妹们找工作难,作为面试官招人也难呀!&am…

代码命名规范是一种责任也是一种精神(工匠精神)

代码命名规范之美规范概述命名规范管理类命名BootstrapProcessorManagerHolderFactoryProviderRegistrarEngineServiceTask传播类命名ContextPropagator回调类命名Handler ,Callback,Trigger,ListenerAware监控类命名MetricsEstimatorAccumul…

java版云HIS系统源码 微服务架构支持VUE

云his系统源码 一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。 私信了解更多! 本套基于…