题目

具体题目信息可以参考上一篇文章。

进阶:不使用额外的数据结构,只用有限几个变量,且在时间复杂度为O(N)内完成原问题要实现的函数。


思路

进阶解法不使用哈希表来保存对应关系,而只采用有限的几个变量完成所有功能。具体过程如下:

1.遍历链表,对每个节点生成相应的副本节点,并将副本节点放入原链表中。

原链表 步骤1之后
1->2->3->null 1->1'->2->2'->3->3'->null

2.再次遍历链表,设置每个副本节点的rand指针

3.对链表进行拆分。

4.将副本链表中的头节点返回即可。


源码

public class Node{public int value;public Node next;public Node rand;public Node(int data){this.value=data;}
}public Node copyListWithRand2(Node head){if(head==null){return null;}Node cur=head;Node next=null;//复制并连接每一个节点while(cur!=null){next=cur.next;cur.next=new Node(cur.value);cur.next.next=next;cur=next;}cur=head;Node curCopy=null;//设置复制节点的rand指针while(cur!=null){next=cur.next.next;curCopy=cur.next;//这里之所以是cur.rand.next是因为指向对应的复制的节点,而不是原节点curCopy.rand=cur.rand!=null?cur.rand.next:null;cur=next;}Node res=head.next;cur=head;//拆分while(cur!=null){next=cur.next.next;curCopy=cur.next;cur.next=next;curCopy.next=next!=null?next.next:null;cur=next;}return res;
}

链表问题9——复制含有随机指针节点的链表(进阶)相关推荐

  1. 链表问题9——复制含有随机指针节点的链表(初阶)

    题目 public class Node{public int value;public Node next;public Node rand;public Node(int data){this.v ...

  2. 数据结构与算法之复制含有随机指针节点的链表和两个链表相交的一系列问题

    数据结构与算法复制含有随机指针节点的链表和两个链表相交的一系列问题 目录 复制含有随机指针节点的链表 两个链表相交的一系列问题 1. 复制含有随机指针节点的链表 题目概述 思路:创建一个HashMap ...

  3. 左神算法:复制含有随机指针节点的链表 / 复杂链表的复制(Java版本)

    本题来自左神<程序员代码面试指南>"复制含有随机指针节点的链表"题目. 题目 一种特殊的链表节点类描述如下: public static class Node {pub ...

  4. 复制含有随机指针节点的链表~哈希表的使用~(⌒▽⌒)

    题目意思就是说给你给head 的Node节点(这是一个比较特殊的链表),来拷贝出它地结构出来. 方法一:借助HashMap的特性,定义一个HashMap<Node,Node> map对象, ...

  5. 如何复制一个含有随机指针节点的链表

    复制含有随机指针节点的链表 一种特殊的链表节点类描述如下: public class Node {public int value;public Node next;public Node rand; ...

  6. 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)

    1.将单向链表按某值划分成左边小. 中间相等. 右边大的形式 [题目] 给定一个单向链表的头节点head, 节点的值类型是整型, 再给定一个整数pivot. 实现一个调整链表的函数, 将链表调整为左部 ...

  7. 左神算法基础班3_13深度拷贝含有随机指针的链表

    Problem: 复制含有随机指针节点的链表 [题目] 一种特殊的链表节点类描述如下: public class Node { public int value; public Node next; ...

  8. python 带随机指针的链表深度复制_链表--深度拷贝一个带有随机指针的链表

    链表--深度拷贝一个带有随机指针的链表 链表--深度拷贝一个带有随机指针的链表 本文介绍两种解法. 解法1:利用一个map ListNode *copyRandomList(ListNode *hea ...

  9. 复制带有random指针的单链表

    如图1所示,有一条单链表,其节点除了有next指针外,还有一个random指针.random指针可指向单链表中的任意节点,包括它自身.random指针一旦指定,便不再更改.请设计算法,复制此单链表,并 ...

最新文章

  1. 西南石油大学计算机二级成绩查询,西南石油大学本科学生成绩自助查询打印终端管理办法...
  2. 阿里云服务器CentOS6.9安装jenkins
  3. ORACLE RAC+DG 硬件配置
  4. 列运算_Power Query列运算的几种方法比较
  5. c语言中 字符串常量的界定符,c语言题库2
  6. mpython_mPython官方版
  7. asp.net天轰穿视频学习总结
  8. 处理vue项目中使用es6模板字符串中\n换行问题
  9. G-sensor 介绍
  10. UINO优锘:竞速“元宇宙”,中国能凭借数字孪生技术突围吗?
  11. Mysql按条件求和Sum函数
  12. Maltab GUI课程设计——LSTM长短期记忆网络回归预测
  13. 仿泡团影视网源码 苹果cmsV8版本 电脑端+影视模块
  14. 使用HybridSN进行高光谱图像分类
  15. 接口与抽象类的区别,为什么要用接口,抽象类不香吗?
  16. 【Java 类和对象】
  17. 基于嵌入式技术的网络视频监控系统
  18. 基于vue的组织架构树组件_Vue组件基于D3.js布局显示树
  19. 新款趣味测试小程序源码_测试可用
  20. sv中program和module区别

热门文章

  1. Python一键转Java?“Google翻译”你别闹
  2. AI找Bug,一键快速预测
  3. 关于CVPR 2019投稿的一些感想
  4. 收藏此文,今年你需要的学习资源绝对够了!
  5. “围剿”杀人机器人,周志华、Hinton等57位学界大牛出手了
  6. AI一分钟 | 马斯克:我不是中本聪,我自己的比特币都丢了;商汤科技再获阿里巴巴15亿元投资,内部消息称C轮还有更大巨头入股
  7. AI一分钟 | 阿里NLP技术连破两项世界纪录,玉泉一号AI试验卫星明年发射
  8. 比尔·盖茨8000万美元买地建智慧城市,准备打造美国版“雄安新区”
  9. UUID正在被NanoID取代?
  10. 推荐一款神级 API 接口管理神器