c++版本如下:

class Solution {
public:
    RandomListNode* Clone(RandomListNode* pHead)
    {
        RandomListNode* ans = new RandomListNode(-1),*r = ans;
        RandomListNode *p = pHead;
        map<RandomListNode*, RandomListNode*> mp;

        while(pHead){
            mp[pHead] = new RandomListNode(pHead->label); //将所有节点的备份放入哈希表中
            pHead = pHead->next;
        }

        while(p){
            r->next = mp[p];
            r->next->random = mp[p->random];
            r = r->next;
            p = p->next;
        }
        r->next = nullptr;

        return ans->next;

    }
};