zoukankan      html  css  js  c++  java
  • [JAVA]deep copy链表

    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);
        }
    }
    原创供学习参考使用,转载请注明出处http://www.cnblogs.com/cuphoria/ @jm_epiphany
  • 相关阅读:
    Linux下配置APUE的编译 报错之后如何处理
    Sed命令的使用详细解释
    Linux下安装xrdp
    CentOS7.1 VNC Server服务配置
    Linux下core文件调试方法
    GDB获取帮助信息
    gdb调试工具学习
    Linux中tftp安装及使用笔记
    CentOS7.3安装Python3.6
    C#语言注释详解
  • 原文地址:https://www.cnblogs.com/cuphoria/p/10547249.html
Copyright © 2011-2022 走看看