138. Copy List with Random Pointer
public class Solution { public RandomListNode copyRandomList(RandomListNode head) { Map<RandomListNode, RandomListNode> map=new HashMap<RandomListNode,RandomListNode>(); RandomListNode p=new RandomListNode(0); p.next=head; RandomListNode res=new RandomListNode(0); RandomListNode q=res; while(p!=null) { if(p.next!=null) { if(!map.containsKey(p.next)) map.put(p.next, new RandomListNode(p.next.label)); q.next=map.get(p.next); } if(p.random!=null) { if(!map.containsKey(p.random)) map.put(p.random,new RandomListNode(p.random.label)); q.random=map.get(p.random); } p=p.next; q=q.next; } return res.next; } }