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;
}
}
本文介绍了一种复杂链表结构的深拷贝方法,这种链表的节点包含一个额外的随机指针,可能指向链表中的任意节点或null。通过迭代原链表创建新节点并复制随机指针,实现链表的完整复制。
1362

被折叠的 条评论
为什么被折叠?



