码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Copy List with Random Pointer

时间:2014-08-06 17:44:31      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   div   算法   new   

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 }

 

[leetcode]Copy List with Random Pointer,布布扣,bubuko.com

[leetcode]Copy List with Random Pointer

标签:style   blog   http   color   io   div   算法   new   

原文地址:http://www.cnblogs.com/huntfor/p/3894854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!