138. Copy List with Random Pointer

題目:

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)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容