当前位置: 首页 > news >正文

leetcode做题笔记138. 复制带随机指针的链表

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。

例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。

返回复制链表的头节点。

用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:

val:一个表示 Node.val 的整数。

random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为  null 。

你的代码 只 接受原链表的头节点 head 作为传入参数。

思路一:回溯

c语言解法

struct Node* copyRandomList(struct Node* head) {struct Node* cur=head;while(cur){struct Node* next=cur->next;struct Node* copy=(struct Node*)malloc(sizeof(struct Node));copy->val=cur->val;cur->next=copy;copy->next=next;cur=next;}cur=head;while(cur){struct Node* copy=cur->next;if(cur->random==NULL){copy->random=NULL;}else{copy->random=cur->random->next;}cur=copy->next;}cur=head;struct Node* copyhead=NULL,*copytail=NULL;while(cur){struct Node* copy=cur->next;struct Node* next=copy->next;if(copytail==NULL){copytail=copyhead=copy;}else{copytail->next=copy;copytail=copytail->next;}cur->next=next;cur=next;}return copyhead;}

分析:

本题要对一个特殊的链表进行复制,这个链表每个节点包含一个额外增加的随机指针 random,可以先将该链表每个节点记录下来,当记录的节点的指针指向空节点时原复制的节点也指向空,最后将操作完的链表用copytail连接起来,最后输出copyhead

总结:

本题考察对链表的操作,要将链表深拷贝即将链表复制下来再根据具体情况添加最后连接后返回

http://www.lryc.cn/news/166946.html

相关文章:

  • 分布式文件系统的新兴力量:揭秘Alluxio的元数据管理机制【文末送书】
  • ArcGIS标注的各种用法和示例
  • 修改ros中的控制器,便于仿真和驱动真实UR
  • 网络广播模块2*30W 智能4G广播终端开发模块
  • 优思学院|什么是精益项目管理?
  • 【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法
  • 在VSCode中移除不必要的扩展
  • 算法刷题记录-树(LeetCode)
  • Linux中安装MySQL_图解_2023新
  • 生产设备上的静电该如何处理?
  • 山洪灾害预警方案(山洪预警解决方案的组成)
  • 数据库 MVCC 详解
  • process.nextTick和vue的nextTick区别
  • 小程序实现一个 倒计时组件
  • 【四万字】网络编程接口 Socket API 解读大全
  • 无涯教程-JavaScript - ISREF函数
  • Android:获取MAC < 安卓系统11 <= 获取UUID
  • 线程的几种状态
  • kubernetes集群yaml文件与kubectl工具
  • python基础语法(三)
  • Haproxy集群与常见的Web集群调度器
  • centos免密登录
  • 学Python的漫画漫步进阶 -- 第十四步
  • OpenCV(四十二):Harris角点检测
  • C++数据结构题:DS 顺序表--连续操作
  • DM@命题公式@主范式的性质和应用@数理逻辑解决数字电路全加器问题
  • 基于微信小程序+Springboot线上租房平台设计和实现【三端实现小程序+WEB响应式用户前端+后端管理】
  • Xilinx FPGA 7系列 GTX/GTH Transceivers (2)--IBERT
  • Python 文件介绍和正则表达式
  • ueditor百度富文本编辑器粘贴后html丢失class和style样式