通过哈希表来进行复杂链表的复制。map的key值是原有链表,value是复制后的链表。
RandomListNode* Clone(RandomListNode* pHead)
{
if(pHead==NULL )
return pHead ;
unordered_map <RandomListNode *,RandomListNode *>mp;
RandomListNode *t=pHead ;
while(t!=NULL )
{
mp[t]=new RandomListNode(t->label );
t=t->next;
}
t=pHead ;
while(t!=NULL )
{
if(t->next )
mp[t]->next =mp[t->next ];
if(t->random )
mp[t]->random =mp[t->random ];
t=t->next;
}
return mp[pHead ];
}