138.复制带随机指针的链表
题目
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。
要求返回这个链表的深度拷贝。
方法
方法1:不采用字典
1 | # Definition for singly-linked list with a random pointer. |
更容易理解,这个版本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18class Solution(object):
def copyRandomList(self, head):
if not head:
return head
copy = RandomListNode(head.label)
dic = {head: copy}
while head:
tcopy = dic[head]
if head.next:
if head.next not in dic:
dic[head.next] = RandomListNode(head.next.label)
tcopy.next = dic[head.next]
if head.random:
if head.random not in dic:
dic[head.random] = RandomListNode(head.random.label)
tcopy.random = dic[head.random]
head = head.next
return copy