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 }
  • 相关阅读:
    使用windows自带工具计算文件 MD5 值
    去除桌面图标的箭头
    给自己电脑(物理机)安装 linux 系统
    Python 字典 fromkeys()方法的坑
    Python 超时(运行时间太长) 自定义多长时间结束进程
    Win10 python2和python3共存
    verdidebussy的使用技巧
    <DC guide ---2>
    <DC guide ---1>
    <RTL To GDS ---第一阶段>
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4158915.html
Copyright © 2011-2022 走看看