A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
/**
* Definition for singly-linked list with a random pointer.
* class RandomListNode {
* int label;
* RandomListNode next, random;
* RandomListNode(int x) { this.label = x; }
* };
*/
public class Solution {
public RandomListNode copyRandomList(RandomListNode head) {
if(head == null || head.next != null){
return head;
}
RandomListNode newHead = new RandomListNode(head.label);
RandomListNode tmp = newHead;
newHead.random = head.random;
while(head.next != null){
head = head.next;
RandomListNode newTemp = new RandomListNode(head.label);
newTemp.random = head.random;
tmp.next = newTemp;
tmp = tmp.next;
}
return newHead;
}
}