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

  

posted @ 2017-10-10 02:45  Weiyu Wang  阅读(111)  评论(0编辑  收藏  举报