复杂链表的复制,使用Map结构
原链表存在key中, 新链表存在value中。
将key链表的指针引用复制到 value链表上,返回value链表即可。

import java.util.HashMap;

public class Solution {
    public RandomListNode Clone(RandomListNode pHead) {
        if(pHead == null){
            return pHead;
        }

        RandomListNode p1 = pHead;
        RandomListNode p2 = pHead;
        HashMap<RandomListNode,RandomListNode> map = new HashMap<>();
        while(p1!=null){
            map.put(p1,new RandomListNode(p1.label));
            p1 = p1.next;
        }

        while(p2 !=null){
            if(p2.next != null){
                map.get(p2).next = map.get(p2.next);
            }else map.get(p2).next = null;

            map.get(p2).random = map.get(p2.random);
            p2 = p2.next;
        }

        return map.get(pHead);
    }
}