A linked list is given such this each node contains an additional random pointer which could point to all node in the list or null.
Return a deep copy of the list.
Subscribe to see which companies asked this question
1. Insert a new node in the linked list in turn.2. Building a new node random pointer: newnode->random = Oldnode->random->next3. Restore the original linked list and build a new linked list: for example old->next = old->next->next, New->next = New->next->next
Randomlistnode *copyrandomlist (Randomlistnode *head) { if(Head = =nullptr)returnnullptr; Randomlistnode*iter =Head; while(ITER! =nullptr) {Randomlistnode*newnode =NewRandomlistnode (iter->label); NewNode->next = iter->Next; ITER->next =NewNode; ITER= newnode->Next; } ITER=Head; Randomlistnode*Iter1; while(ITER! =nullptr) {Iter1= iter->Next; if(Iter->random! =nullptr) Iter1->random = iter->random->Next; ITER= iter1->Next; } Randomlistnode*ret; RET= head->Next; Iter1=ret; Head->next = ret->Next; ITER= head->Next; while(ITER! =nullptr) {Iter1->next = iter->Next; Iter1= iter1->Next; ITER->next = iter1->Next; ITER= iter->Next; } returnret;}
Copy List with Random Pointer Leetcode