扬中网站哪家做的好,网站怎么做才算精致,手机网站大全1,企业管理培训机构排名前十138. 复制带随机指针的链表 题目-中等难度示例1. 题目-中等难度
给你一个长度为 n 的链表#xff0c;每个节点包含一个额外增加的随机指针 random #xff0c;该指针可以指向链表中的任何节点或空节点。
构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成… 138. 复制带随机指针的链表 题目-中等难度示例1. 题目-中等难度
给你一个长度为 n 的链表每个节点包含一个额外增加的随机指针 random 该指针可以指向链表中的任何节点或空节点。
构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
例如如果原链表中有 X 和 Y 两个节点其中 X.random -- Y 。那么在复制链表中对应的两个节点 x 和 y 同样有 x.random -- y 。
返回复制链表的头节点。
用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示
val一个表示 Node.val 的整数。 random_index随机指针指向的节点索引范围从 0 到 n-1如果不指向任何节点则为 null 。 你的代码 只 接受原链表的头节点 head 作为传入参数。
示例
示例 1 输入head [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2 输入head [[1,1],[2,1]] 输出[[1,1],[2,1]] 示例 3 输入head [[3,null],[3,0],[3,null]] 输出[[3,null],[3,0],[3,null]] 提示 0 n 1000-104 Node.val 104Node.random 为 null 或指向链表中的节点。 来源力扣LeetCode 链接https://leetcode.cn/problems/summary-ranges 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
1.
时间 44ms 击败 40.87%使用 Python 的用户 内存 13.24mb 击败 93.75%使用 Python 的用户 # Definition for a Node.
class Node:def __init__(self, x, nextNone, randomNone):self.val int(x)self.next nextself.random random
class Solution(object):def copyRandomList(self, head)::type head: Node:rtype: Node# 如果为空返回空if not head: return None# 创建字典dic{}# 遍历链表n headwhile n:# 创建新链表nn Node(n.val)# 放置进字典dic[n] nnn n.next# 再次遍历链表n headwhile n:# 如果链表存在下一项if n.next:# 链表新建节点指向下一个链表新建节点dic[n].next dic[n.next]if n.random:# 同上dic[n].random dic[n.random]n n.nextreturn dic[head]