(head)
return copy[head]
:type head: RandomListNode
    :rtype: RandomListNode
:type head: RandomListNode
    :rtype: RandomListNode
: type head : RandomListNode : rtype : RandomListNode
def copy_random_pointer_v2(head):
    """
    :type head: RandomListNode
    :rtype: RandomListNode
    """
    copy = defaultdict(lambda: RandomListNode(0))
    copy[None] = None
    node = head
    while node:
        copy[node].label = node.label
        copy[node].next = copy[node.next]
        copy[node].random = copy[node.random]
        node = node.next
    return copy[head]
def copy_random_pointer_v2 ( head ) : copy = defaultdict ( lambda : RandomListNode ( 0 ) ) copy [ None ] = None node = head while node : copy [ node ] . label = node . label copy [ node ] . next = copy [ node . next ] copy [ node ] . random = copy [ node . random ] node = node . next return copy [ head ]