题目:
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.
思路和注意点:
1.答案很多特别屌的解法,学到一个知识点, python里的object是可hash的!
2.然后这道题里, trick part 就是其实第一遍过了整个list,就可以吧所有新的node 生成, 第二次就不用生成新的了。 这两道题类似,可以总结提高。
Python:
# Definition for singly-linked list with a random pointer.
# class RandomListNode(object):
# def __init__(self, x):
# self.label = x
# self.next = None
# self.random = None
class Solution(object):
def copyRandomList(self, head):
"""
:type head: RandomListNode
:rtype: RandomListNode
"""
#seems not hard, try first time, list varible is unhashable,but object is hashable!!!!
dick = {}
m = n = head
while m:
dick[m] = RandomListNode(m.label)
m = m.next
while n:
dick[n].next = dick.get(n.next)
dick[n].random = dick.get(n.random)
n = n.next
return dick.get(head)