当前位置: 首页 > news >正文

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

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 <= 104
  • Node.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, next=None, random=None):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]
http://www.lryc.cn/news/118417.html

相关文章:

  • Windows中redis怎么设置密码
  • 租赁OLED透明屏:打造独特商业体验的智慧选择
  • Nacos服务治理—负载均衡
  • flask-----初始项目架构
  • 揭秘史上最全可视化大屏模板,00后亲测好用到离谱,效率加速99%
  • nginx基于主机和用户访问控制以及缓存简单例子
  • React使用antd的图片预览组件,点击哪个图片就预览哪个的设置
  • 排序的介绍
  • appuploader使用教程
  • 企业权限管理(七)-权限操作
  • 【深度学习笔记】TensorFlow 常用函数
  • 函数的递归与迭代
  • win10 + VS2022 安装opencv C++
  • nginx反向代理及负载均衡的实现
  • Tomcat部署SpringBoot项目
  • Oracle笔记--dblink
  • Mapbox加载天地图CGCS2000矢量瓦片地图
  • day3 STM32 GPIO口介绍
  • 【ElasticSearch】ElasticSearch 内存设置原则
  • VUE+ElementUI的表单验证二选一必填项,并且满足条件后清除表单验证提示
  • NLP 时事和见解【2023】
  • Windows 环境下 Python3 离线安装 cryptography 失败
  • 年轻代频繁GC ParNew导致http变慢
  • 在.NET 6.0中自定义接口路由
  • Kotlin读写分离CopyOnWriteArrayList
  • centos自动同步北京时间
  • element-ui表格跨页多选实现
  • 线性代数(三) 线性方程组向量空间
  • 学习跨度级交互以提取方面情感三元组
  • 那些年的Xposed开发经验记录