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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容