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

0138. 随机链表的复制

文章目录

      • 题目链接
      • 题目描述
      • 解题思路
      • 参考代码
      • 复杂度分析

题目链接

https://leetcode.cn/problems/copy-list-with-random-pointer/

题目描述

给定一个含随机指针 random 的链表,每个节点除了 next 指针外还有一个 random 指向链表中的任意节点或 null。请深拷贝并返回该链表的头节点。

解题思路

  • 哈希表映射:
    • 第一次遍历:为每个原节点创建拷贝节点,并记录映射 原→新。
    • 第二次遍历:利用映射补齐新节点的 next 与 random 指针。
  • 也可用原地三步法(穿插克隆节点、设置 random、拆分)达到 O(1) 额外空间。

参考代码

// Definition for a Node.
// class Node {
//     int val;
//     Node next;
//     Node random;
//     public Node(int val) { this.val = val; }
// }class Solution {public Node copyRandomList(Node head) {if (head == null) return null;Map<Node, Node> map = new HashMap<>();// 1) 克隆所有节点,建立原->新映射for (Node cur = head; cur != null; cur = cur.next) {map.put(cur, new Node(cur.val));}// 2) 连接新链表的 next 与 randomfor (Node cur = head; cur != null; cur = cur.next) {Node clone = map.get(cur);clone.next = map.get(cur.next);       // cur.next 可能为 null,map.get(null) 返回 null,正合适clone.random = map.get(cur.random);   // 同理}return map.get(head);}
}

复杂度分析

  • 时间复杂度:O(n),两次线性遍历。
  • 空间复杂度:O(n),哈希表存储原节点到新节点的映射。
http://www.dtcms.com/a/537256.html

相关文章:

  • 长春网站建设公司seo是什么意思教程
  • 【vllm】源码解读:vLLM 中 Data Parallelism DP=8 核心原理详解
  • 对信号的理解
  • 【系统分析师】高分论文:论软件的安全性设计(某校通系统)
  • 硬盘专业名词:总线、协议、接口详细解析
  • Agent Skills应用解析:构建可扩展、高效率AI探员
  • 【车载测试常见问题】CAN一致性测试包含哪些内容?
  • 成都网站开发制作上海进博会
  • 云手机和虚拟机的区别都有哪些?
  • php wap网站实现滑动式数据分页大公司网站开发
  • WebSocket 详解
  • SPR 实验笔记:从原理到实操,解锁天然产物筛选、靶点验证与膜蛋白互作的“金标准”技术
  • 发布会回顾|袋鼠云发布多模态数据中台,重构AI时代的数据底座
  • AOI在PCB制造领域的核心应用
  • 网站建设系统规划seo信息优化
  • 建筑公司网站设计思路静态网站怎么样
  • python在Linux服务器中安装
  • 排序算法解析
  • 餐饮 网站建设互联斗士网站建站
  • 民营医院网站建设视频网站点击链接怎么做
  • Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用
  • 微信小程序-智慧社区项目开发完整技术文档(上)
  • 2025年10月主流工程项目管理软件推荐
  • 设计模版网站一级a做爰片365网站
  • 计算机网络自顶向下方法7——应用层 HTTP概述及其连接方式
  • 网站建设贵不贵wordpress站文章显示时分秒
  • 【编译原理笔记】3.4 Tokens Recognization
  • day19_添加修改删除
  • 【Linux】ps -ef 和 ps -aux的区别
  • OpenFeign与Sentinel集成的原理