標籤:
1. Title
Copy List with Random Pointer
2. Http address
https://leetcode.com/problems/copy-list-with-random-pointer/
3. The question
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.
4. My code(AC)
1 class RandomListNode { 2 int label; 3 RandomListNode next,random; 4 public RandomListNode(int x) 5 { 6 this.label = x; 7 } 8 9 }10 11 //Accpeted12 public static RandomListNode copyRandomList(RandomListNode head)13 {14 Map<RandomListNode,RandomListNode> mapH = new HashMap<RandomListNode,RandomListNode>();15 RandomListNode re, q,end;16 RandomListNode p = head;17 re = null;18 end = null;19 while( p != null )20 {21 q = new RandomListNode(p.label);22 if( end == null)23 {24 re = q;25 end = q;26 }else{27 end.next = q;28 end = q;29 }30 mapH.put(p,q);31 p = p.next;32 }33 34 p = head;35 q = re;36 while( p != null && q != null) {37 if( p.random != null )38 {39 q.random = mapH.get(p.random);40 41 }else{42 q.random = null;43 }44 p = p.next;45 q = q.next;46 }47 return re;48 49 }
Copy List with Random Pointer