leetcode刷题笔记(python3)--138. Copy List with Random Pointer

这篇博客详细介绍了LeetCode第138题——复制带有随机指针的链表的Python3解题思路。题目要求返回链表的深拷贝,链表节点包含一个额外的随机指针,可能指向链表中的任意节点或空。文章通过例子展示了输入输出格式,并提到LeetCode从138题开始不再支持Golang,改为使用Python3进行解答。
摘要由CSDN通过智能技术生成

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.

The Linked List is represented in the input/output as a list of n nodes. Each node is represented as a pair of [val, random_index] where:

val: an integer representing Node.val
random_index: the index of the node (range from 0 to n-1) where random pointer points to, or null if it does not point to any node.

Example 1:
在这里插入图片描述

Input: head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
Output: [[7,null],[13,0],[11,4],[10,2],[1,0]]
Example 2:
在这里插入图片描述
Input: head = [[1,1],[2,1]]
Output: [[1,1],[2,1]]
Example 3:
在这里插入图片描述
Input: head = [[3,null],[3,0],[3,null]]
Output: [[3,null],[3,0],[3,null]]
Example 4:

Input: head = []
Output: []
Explanation: Given linked list is empty (null pointer), so return null.

Constraints:

-10000 <= Node.val <= 10000
Node.random is null or pointing to a node in the linked list.
Number of Nodes will not exceed 1000.

leetcode从138题开始没有golang支持了,改用Python3
解题思路

class Solution:
    def copyRandomList(self, head: 'Node') -> 'Node':
        nodeDict = dict()
        curr = Node(head.val,None,None)
        nodeDict[head] = curr
        res = curr
        node = head
        while node:
            n = Node(node.val,node.next,None)
            nodeDict[node] = n
            curr.next = n
            curr,node = curr.next,node.next

        node = head
        while node:
            if node.random:
                nodeDict[node].random = nodeDict[node.random]
            node = node.next
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值