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;
}
}