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.

    Solution:

     1 /**
     2  * Definition for singly-linked list with a random pointer.
     3  * class RandomListNode {
     4  *     int label;
     5  *     RandomListNode next, random;
     6  *     RandomListNode(int x) { this.label = x; }
     7  * };
     8  */
     9 public class Solution {
    10     public RandomListNode copyRandomList(RandomListNode head) {
    11         Map<RandomListNode,RandomListNode> map = new HashMap<RandomListNode,RandomListNode>();
    12         if (head==null) return null;
    13 
    14         RandomListNode head2 = new RandomListNode(head.label);
    15         map.put(head,head2);
    16         RandomListNode cur = head2;
    17 
    18         while (head!=null){
    19             RandomListNode rand1 = head.random;
    20             if (rand1!=null && map.containsKey(rand1)){
    21                 cur.random = map.get(rand1);
    22             } else if (rand1!=null) {
    23                 RandomListNode rand2 = new RandomListNode(rand1.label);
    24                 map.put(rand1,rand2);
    25                 cur.random = rand2;
    26             }
    27 
    28             if (head.next==null){
    29                 cur.next=null;
    30             } else {
    31                 RandomListNode next = head.next;
    32                 if (map.containsKey(next))
    33                     cur.next = map.get(next);
    34                 else {
    35                     RandomListNode next2 = new RandomListNode(next.label);
    36                     cur.next = next2;
    37                     map.put(next,next2);
    38                 }
    39             }
    40 
    41             head = head.next;
    42             cur = cur.next;
    43         }
    44 
    45         return head2;        
    46     }
    47 }
  • 相关阅读:
    Python eval 函数妙用
    502与504故障分析与解决方法
    [转]谈谈select, iocp, epoll,kqueue及各种网络I/O复用机制
    计算阶乘n!末尾0的个数
    C++中的Overload、Override和Overwrite
    C++中的空类与空结构体大小
    多线程编程之优先级翻转问题
    数据库原理之事务(二)
    数据库原理之事务(一)
    NoSQL之基础篇
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4158915.html
Copyright © 2011-2022 走看看