剑指Offer35:复杂链表的复制(Java)_剑指 offer 35. 复杂链表的复制 java-程序员宅基地

技术标签: 算法  java  数据结构和算法  链表  指针  数据结构  

题目描述:
在这里插入图片描述
解题思路:
    这道题跟普通的复制链表的思路一样,不同的是他有个random指向。首先创建一个新的链表,通过递归调用的方式,不断把值赋给新的链表。同时我们通过一个Map集合来保存random的指向,根据random,我们可以在Map集合中找到之前random指针指向的node节点,并把它赋值给random指针。

代码实现:

class Solution {
    
    Map<Node,Node> nodeMap = new HashMap<>();
    public Node copyRandomList(Node head) {
    
        if(head == null){
    
            return null;
        }
        //复制节点
        Node cur = new Node(head.val);
        //存入map
        nodeMap.put(head, cur);
	    //递归调用,当前cur.next = 下一层返回的cur
        cur.next = copyRandomList(head.next);
        //如果当前head节点random不为null,根据map找到对应的新节点
        if(head.random != null){
    
            cur.random = nodeMap.get(head.random);
        }
        return cur;
    }
}

执行结果:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hailongcsdn/article/details/108358395

智能推荐

tc275单片机的内核_英飞凌TC275_bootloader源码 TC275单片机基于autosar的bootloader工程代码(Bootloader engineering code of tc...-程序员宅基地

文章浏览阅读1.4k次。压缩包 : f9a27655e546fd0d4bf5ed97eda6479f.zip 列表英飞凌TC275_bootloader源码/英飞凌TC275_bootloader源码/.cproject英飞凌TC275_bootloader源码/.htcproject英飞凌TC275_bootloader源码/.project英飞凌TC275_bootloader源码/.settings/英飞凌TC27..._英飞凌tc275芯片bootloader开发

SimpleFOC(三)—— AS5600角度读取_as5600磁编码器中文手册-程序员宅基地

文章浏览阅读3.2w次,点赞25次,收藏137次。目录一、硬件介绍1、磁编码器说明:2、硬件连接二、程序演示1、模拟电压获取角度2、I2C通信获取角度三、程序拓展一、硬件介绍1、磁编码器说明:  ◆AS5600与两极磁铁配对,可以输出12位分辨率的磁性旋转位置,支持IIC通信,还可以输出模拟电压和PWM信号。官方例程中主要演示了模拟电压和IIC通信两种角度获取方式。  ◆模拟电压模式,Aout引脚输出0—5V对应0°—360°,  ◆I2C模式,读取0x0C/0x0D两个寄存器,获取12bits的角度值,0—4096对应0°—360°,2_as5600磁编码器中文手册

Windows恢复Grub引导,用grub安装ubuntu-程序员宅基地

文章浏览阅读86次。http://www.linuxidc.com/wap.aspx?nid=18027&p=&cp=&cid=http://m.blog.chinaunix.net/uid-22197900-id-359250.htmlhttp://zhidao.baidu.com/question/147900468.html?fr=ala&word=Grub%20%E5%AE..._在windowa 修复grub 引导

lua游戏代码_在游戏中如何使用LUA脚本语言_lua如何用一段代码在游戏屏幕上添加一个按钮-程序员宅基地

文章浏览阅读3.6k次。当你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要的信息。或许你认为这样就足够了,为什么还要使用Lua呢?应用于“配置”这个目的,Lua提供给你更为强大,也更为灵活的表达方式,在上一种方式中,你无法根据某些条件来配置你的游戏,Lua提供给你灵活的表达方式,你可以类似于这样来配置你的游戏:ifplayer:is_dead()then_lua如何用一段代码在游戏屏幕上添加一个按钮

LINUX下MATLAB MEX编译的问题_matlab mex编译linux-程序员宅基地

文章浏览阅读3.8k次。最近跑一个程序,是matlab和c混合编程的,而且调用了一些Linux下特有的库文件,所以只能在linux下运行。但是ubuntu里安装的Matlab r2013a 出现了gcc版本问题。matlab r2013a只支持gcc4.4, 而ubuntu的gcc已经更新到4.8.2所以为了方便,只好安装4.4版的编译器, 包括gcc, g++, gfortran安装命令_matlab mex编译linux

序列化和反序列化_使用反序列化的 readobject() 方法-程序员宅基地

文章浏览阅读348次。1.概念:序列化: 将数据结构或对象转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常2:为什么要序列化和反序列化我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二_使用反序列化的 readobject() 方法

随便推点

ajax实现留言板功能 -_请根据ssm框架,用ajax写一个互动留言功能的完整代码-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏12次。首先理解ajax是实现页面无刷新效果,留言就是要这种效果,当发布留言时候直接展示留言内容在下面.好了直接上代码1.新建一个控制器,内容如下: &lt;?phpnamespace app\index\controller;use think\Controller;class Index extends Controller{ public function in..._请根据ssm框架,用ajax写一个互动留言功能的完整代码

MobileNet实战:基于 MobileNet 的人脸微表情分类(Caffe)_嘟嘴表情识别开源基于人脸关键点-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏15次。MobileNet实战:基于 MobileNet 的人脸微表情分类(Caffe)这一部分内容总共由下面四篇文章组成:MobileNet 进化史: 从 V1 到 V3(V1篇)MobileNet 进化史: 从 V1 到 V3(V2篇)MobileNet 进化史: 从 V1 到 V3(V3篇)MobileNet实战:基于 MobileNet 的人脸表情分类1. 前言前面我们已经简要介..._嘟嘴表情识别开源基于人脸关键点

ruoyi-ui下载依赖报错npm ERR! cb() never called!_error running 'npm install in ruoyi-vue-master\ruo-程序员宅基地

文章浏览阅读1k次。uoyi-ui下载依赖报错npm ERR! cb() never called!_error running 'npm install in ruoyi-vue-master\ruoyi-ui': unresolved interpr

十大实用的办公工具网站,可以解决你日常100%的问题_办公网站导航-程序员宅基地

文章浏览阅读1.5k次。1.快捷键查询(这是个英文网站,推荐使用谷歌浏览器访问,再使用谷歌翻译)网站地址:https://usethekeyboard.com/Use The Keyboard是一个提供快捷键查询的网站的,你通过它可以查询苹果APP,windows系统,以及一些网站的快捷键操作,你知道熟练的掌握一些快捷键能够大大的提高工作或者学习的效率,当然,也不是特意的去记忆,而是在使用的过程中逐渐熟悉,前期就可以借助这种工具进行查询。2,MikuTools网站地址:https://miku.toolsM_办公网站导航

51单片机之数码管_0x3f,0x06-程序员宅基地

文章浏览阅读5k次,点赞4次,收藏13次。1.静态数码管原理图LED数码管根据LED的不同接法分为两类:共阴和共阳_0x3f,0x06

计算机组成原理脱机运算器实验数据,实验三:脱机运算器实验报告.pdf-程序员宅基地

文章浏览阅读841次。大连理工大学大连理工大学 本科实验报告本科实验报告 课程名称 计算机组成原理实验 学院 系 软件学院 专 业 软件工程 班 级 0907 英 学 号 200892497 学生姓名 刘云伟 2011 年 3 月 31 日 大连理工大学实验报告大连理工大学实验报告 学院 系 软件学院 专业 软件工程 班级 0907 英 姓 名 刘云伟 学号 200892497 实验台 21 实验时间 2011 3 3..._脱机运算器实验结果表格