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

力扣-138.随机链表的复制

题目链接

138.随机链表的复制

解法一:哈希表+递归复制

class Solution {HashMap<Node, Node> map = new LinkedHashMap<>();public Node copyRandomList(Node head) {if (head == null) {return null;}if (!map.containsKey(head)) {Node headNew = new Node(head.val);map.put(head, headNew);headNew.next = copyRandomList(head.next);headNew.random = copyRandomList(head.random);}return map.get(head);}
}

小结:如果遍历过程中遇到任何一个节点没有被创建,立刻递归地进行创建。

解法二:哈希表+迭代

public Node copyRandomList(Node head) {if (head == null) return null;HashMap<Node, Node> map = new HashMap<>();Node curr = head;// 第一遍遍历:创建所有新节点 while (curr != null) {map.put(curr,  new Node(curr.val)); curr = curr.next; }// 第二遍遍历:连接 next 和 random curr = head;while (curr != null) {map.get(curr).next  = map.get(curr.next); map.get(curr).random  = map.get(curr.random); curr = curr.next; }return map.get(head); 
}

小结:解法一的迭代写法,更加清晰易懂。

解法三:迭代+结点拆分

  • 详见这里

小结:

  1. 复制各节点,并构建拼接链表,形如7->7->3->3->…
  2. 构建各新节点的 random 指向
  3. 拆分两链表
http://www.lryc.cn/news/588461.html

相关文章:

  • 一分钟K线实时数据数据接口,逐笔明细数据接口,分时成交量数据接口,实时五档委托单数据接口,历史逐笔明细数据接口,历史分时成交量数据接口
  • 深入理解MyBatis延迟加载:原理、配置与实战优化
  • 美丽田园发布盈喜公告,预计净利增长超35%该咋看?
  • 现场设备无法向视频汇聚EasyCVR视频融合平台推流的原因排查与解决过程
  • CA-IS3082W 隔离485 收发器芯片可能存在硬件BUG
  • 第十五节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - vue前端 生产部署
  • Laravel 中 chunk 分页漏掉数据?深度解析原因与解决方案
  • Unity3D + VS2022连接雷电模拟器调试
  • 4、qt窗口(沉淀中)
  • iOS APP 上架流程:跨平台上架方案的协作实践记录
  • ConcurrentHashMap 原子操作详解:computeIfAbsent、computeIfPresent和putIfAbsent
  • C语言-数据输入与输出
  • 《甘肃棒球》国家级运动健将标准·棒球1号位
  • c#进阶之数据结构(动态数组篇)----Queue
  • Javaweb使用websocket,请先连上demo好吧!很简单的!
  • Vim库函数
  • 【DOCKER】-4 dockerfile镜像管理
  • 纯C++11实现!零依赖贝叶斯情感分析系统,掌握机器学习系统工程化的秘密!
  • 学习 Flutter (三):玩安卓项目实战 - 上
  • 机器学习、深度学习、神经网络之间的关系
  • redis配置(Xshell连接centos7的基础上)
  • Mysql数据库学习--多表查询
  • Python中使用Re模块TypeError: cannot use a string pattern on a bytes-like object 解决办法
  • Leaflet面试题及答案(81-100)
  • 九、官方人格提示词汇总(中-1)
  • 项目进度图不直观,如何优化展示方式
  • Go泛型完全指南:从基础到实战应用
  • 进程---基础知识+命令+函数(fork+getpid+exit+wait+exec)
  • iOS —— 网易云仿写
  • 短剧看广告APP源码独立部署与二次开发指南(支持二开)