美文网首页
138. Copy List with Random Point

138. Copy List with Random Point

作者: Leorio_c187 | 来源:发表于2017-06-12 23:07 被阅读0次

    题目:

    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)
    

    相关文章

      网友评论

          本文标题:138. Copy List with Random Point

          本文链接:https://www.haomeiwen.com/subject/fcprqxtx.html