zoukankan      html  css  js  c++  java
  • 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.

    Have you been asked this question in an interview? 

    Discuss

    /**
     * Definition for singly-linked list with a random pointer.
     * class RandomListNode {
     *     int label;
     *     RandomListNode next, random;
     *     RandomListNode(int x) { this.label = x; }
     * };
     */
    public class Solution {
        public RandomListNode copyRandomList(RandomListNode head) {
            RandomListNode newHead = new RandomListNode(0);
            Map<RandomListNode, RandomListNode> oldToNew = new HashMap<RandomListNode, RandomListNode>();
            Map<RandomListNode, RandomListNode> newToOld = new HashMap<RandomListNode, RandomListNode>();
            if(head != null){
                RandomListNode nextNode = head;
                RandomListNode nextNewNode = newHead;
                while(nextNode != null){
                    nextNewNode.next = new RandomListNode(nextNode.label);
                    nextNewNode = nextNewNode.next;
                    oldToNew.put(nextNode, nextNewNode);
                    newToOld.put(nextNewNode, nextNode);
                    nextNode = nextNode.next;
                }
                nextNewNode.next = null;
                nextNewNode = newHead.next;
                while(nextNewNode != null){
                    RandomListNode tempOld = newToOld.get(nextNewNode);
                    RandomListNode tempnew = oldToNew.get(tempOld.random);
                    nextNewNode.random = tempnew;
                    nextNewNode = nextNewNode.next;
                }
            }
            newHead = newHead.next;
            return newHead;
        }
    }
    

      

  • 相关阅读:
    SQLite简介
    dockerfiles宝藏系列
    Docker容器运行GUI程序的配置方法
    Windows神器cmder
    Typora设置标题自动添加序号
    手机往电脑备份相册
    搜索引擎的高级使用技巧
    Django Model 模型
    前后端分离是什么操作
    搭建FTP(win10版)以及基本FTP操作
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3565856.html
Copyright © 2011-2022 走看看