deep copy的意思我觉得就是复制一个对象成为新的对象,和原来的对象有不同的内存地址,不是简单的引用复制。

题目来源:leetcode

题目描述:

Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.


最简单的办法就是先把所有都复制一遍,然后重新给他的next和radom赋值。实际上直接在当前结点的后面复制会比在map中复制更加快,但是放到map感觉更加形象的解释deepcopy的概念

/*
// Definition for a Node.
class Node {public int val;public Node next;public Node random;public Node() {}public Node(int _val,Node _next,Node _random) {val = _val;next = _next;random = _random;}
};
*/
class Solution {public Node copyRandomList(Node head) {Map<Node,Node> m=new HashMap<Node,Node>();Node cur=head;while(cur!=null){m.put(cur,new Node(cur.val,null,null));cur=cur.next;}cur=head;while(cur!=null){m.get(cur).next=m.get(cur.next);m.get(cur).random=m.get(cur.random);cur=cur.next;}return m.get(head);}
}

转载于:https://www.cnblogs.com/cuphoria/p/10547249.html

[JAVA]deep copy链表相关推荐

  1. 浅拷贝(shallow copy)和深拷贝(deep copy)

    浅拷贝(shallow copy):只负责克隆按值传递的数据(比如基本数据类型.String类型) 深拷贝(deep copy):除了shallow copy的值外,还负责克隆引用类型的数据,基本是就 ...

  2. python(numpy,pandas5)——numpy中copy 和 deep copy

    文章目录 前言 copy deep copy 前言 根据 莫烦Python的教程 总结写成,以便自己复习和使用,这里我就不哟林地挂原创了

  3. 用JAVA语言创建链表的方法

    链表刚学习时是用c来学习的,那时候对于结构体,指针这些东西实现链表觉得很合适,但想要应用到java上还是有些不同的 这里,我学习下用java来使用链表的方法: 首先,定义节点类 //链表节点 clas ...

  4. Java IOUtils.copy方法代码示例(亲测)

    本文整理汇总了Java中org.apache.commons.io.IOUtils.copy方法的典型用法代码示例.如果您正苦于以下问题:Java IOUtils.copy方法的具体用法?Java I ...

  5. java模拟单链表环形链表解决约瑟夫问题

    java模拟环形链表解决约瑟夫问题 此文是观看尚硅谷韩老师的数据结构与算法学习视频整理的笔记 约瑟夫问题描述 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算 ...

  6. java代码实现链表_java单链表代码实现

    用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String ...

  7. .NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)

    今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么.为什么.和怎么实现).想必很多人也接触过这两个概念 ...

  8. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  9. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片合并分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示 ...

最新文章

  1. Python破解验证码技术,识别率高达百分之八十
  2. 爬虫学习笔记(三)requests模块使用
  3. 论文笔记:MobileNet v2
  4. Markdown--Latex公式编辑_验证
  5. python的类里的属性是否可以为列表_是否有Python方法可以访问类的所有非私有和非内置属性?...
  6. mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
  7. 局域网文件共享软件 开源_4个用于共享文件的开源工具
  8. android9 添加开机音乐
  9. Mac中Word 2016导出PDF附带书签目录结构
  10. 自定义View之仿虾米音乐TabLayout
  11. curl 请求日志_CURL常用命令
  12. Postgresql 配置文件详解
  13. dataframe按照某列排序
  14. Java_面向对象基础(类、对象、方法和构造函数)
  15. 开年纳新|天空卫士家族荣誉谱上再添多名新“成员”
  16. 在桌面上显示你的每日计划(提醒事项)
  17. 平面设计师都在用的设计素材网站,免费下载~
  18. mysql查询1万条数据要1秒钟_SQL查询效率:100w数据查询只需要1秒钟
  19. Vue,图片编辑功能实现
  20. IMT-2020明确5G频谱需求:高频需求量至少14GHz

热门文章

  1. Linux下php安装Redis扩展
  2. Windows Server 2008中部署AD
  3. 结构体怎么赋值_Go 经典入门系列 16:结构体
  4. .net平台下C#socket通信(中)
  5. [BZOJ 5093]图的价值
  6. jQ 插件 iscroll.js
  7. spring 中属性scope 的prototype(有状态)和singleton(无状态)
  8. How to consume AIF service(即WCF service) in SSIS project
  9. Windows内核 基本汇编指令
  10. 使用UrlRewrite时修改form的action属性问题