zoukankan      html  css  js  c++  java
  • [leetcode]Copy List with Random Pointer

    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.

    剑指offer中的原题

    算法思路:

    遍历原list的每一个节点,对每一个节点生成一个copy节点,插到原节点的后面。完成next的拷贝

    第二遍扫描,对每一个原节点的random节点,其copy节点的random应该为原节点random.next。完成random的拷贝

    第三遍扫描,将copy list取下来。

    【注意】:分解原list和copy list时候,要完整的把原list给组装起来。不能破坏原list的结构。

     1 public class Solution {
     2     public RandomListNode copyRandomList(RandomListNode head) {
     3             if(head == null) return null;
     4             RandomListNode node = head;
     5             while(node != null){
     6                 RandomListNode tem = new RandomListNode(node.label);
     7                 tem.next = node.next;
     8                 node.next = tem;
     9                 node = node.next.next;
    10             }
    11             node = head;
    12             while(node != null){
    13                 RandomListNode next = node.next;
    14                 if(node.random != null)
    15                     next.random = node.random.next;
    16                 node = node.next.next;
    17             }
    18             RandomListNode hhead = new RandomListNode(0);
    19             RandomListNode pointer = hhead;
    20             node = head;
    21             while(node != null){
    22                 pointer.next = node.next;
    23                 pointer = node.next;
    24                 node.next = node.next.next;
    25                 node = node.next;
    26             }
    27             return hhead.next;
    28         }
    29 }
  • 相关阅读:
    基于jquery 的插件,让IE支持placeholder属性
    MongoDB入门_MongoDB安装与配置
    MongoDB入门_MongoDB特色
    MongoDB入门_相关网站
    MongoDB入门_学习目标
    Shell编程
    redis数据类型及基本命令
    redis配置文件详解
    redis命令
    安装运行redis
  • 原文地址:https://www.cnblogs.com/huntfor/p/3894854.html
Copyright © 2011-2022 走看看