105. 复制带随机指针的链表

105. 复制带随机指针的链表

中文English

给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。

返回一个深拷贝的链表。 

挑战

可否使用O(1)的空间

hashmap写法,O(n)时间复杂度
"""
Definition for singly-linked list with a random pointer.
class RandomListNode:
    def __init__(self, x):
        self.label = x
        self.next = None
        self.random = None
"""


class Solution:
    # @param head: A RandomListNode
    # @return: A RandomListNode
    def copyRandomList(self, head):
        # write your code here
        #hashmap来存储,label
        
        root = head
        mapping = {}
        while head:
            mapping[head] = RandomListNode(head.label)
            head = head.next
            
        for node in mapping:
            if node.next:
                mapping[node].next = mapping[node.next]
            if node.random:
                mapping[node].random = mapping[node.random]
        
        return mapping[root]
原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13466858.html