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

Leetcode面试经典150题-138.随机链表的复制

题目比较简单,重点是理解思想,random不管,copy一定要放在next

而且里面的遍历过程不能省略

解法都在代码里,不懂就留言或者私信

/*
// Definition for a Node.
class Node {int val;Node next;Node random;public Node(int val) {this.val = val;this.next = null;this.random = null;}
}
*/class Solution {/**基本思路:1.遍历链表,每个节点拷贝一个节点放到它的next位置,然后它的copy的下一个放它原来的next2.把copy的random指针指向原始节点random指针的下一个(因为下一个是random的copy)3.拆分链表,把新的链表拷贝出来*/public Node copyRandomList(Node head) {if(head == null) {return null;}/**遍历链表复制节点并连接 */Node cur = head;while(cur != null) {Node next = cur.next;Node curCopy = new Node(cur.val);cur.next = curCopy;curCopy.next = next;cur = next;}/**设置新节点的random指针*/cur = head;while(cur != null) {/**这里因为存在复制节点并且复制节点肯定放在原始节点的下一个,所以cur.next肯定不为空,所以这里不会有空指针的问题*/Node next = cur.next.next;cur.next.random = cur.random == null? null : cur.random.next;cur = next;}/**断开链接,分离出拷贝链表,这里先把拷贝链表头节点拿出来*/Node newHead = head.next;/**还是通过从原来的头开始遍历,因为原链表要改next指针 */cur = head;while(cur != null) {/**拿到原来链表中的next,这个next可能为空 */Node next = cur.next.next;/**这里有可能next是null,要判断,不然会有空指针 */cur.next.next = next == null? null : next.next;/**指向原来的next */cur.next = next;/**指针挪到下个节点继续 */cur = next;}return newHead;}
}

http://www.lryc.cn/news/436654.html

相关文章:

  • freemarker模板学习笔记
  • 高亚科技与广东海悟携手,打造全流程电子竞标管理平台!
  • 240908-结合DBGPT与Ollama实现RAG本地知识检索增强
  • AMD ThinkSystem服务器上的 Linux 和 C 状态设置 - Lenovo ThinkSystem
  • Redis过期删除和缓存淘汰
  • Golang | Leetcode Golang题解之第401题二进制手表
  • TON智能合约stdlib_ext库:扩展功能一览
  • LabVIEW开发FPGA方法与FIFO数据丢失处理
  • Python中的内存池机制
  • 智能家居系统(基于STM32F103C8T6标准库+FreeRTOS+Qt串口开发实现)
  • [数据集][目标检测]脊椎检测数据集VOC+YOLO格式1137张1类别
  • 大受欢迎的游戏却又意外被作者下架的《Flappy Bird》将重返iPhone
  • Flutter类
  • 深入解析全连接层:PyTorch 中的 nn.Linear、nn.Parameter 及矩阵运算
  • 缓存对象反序列化失败
  • F28335的存储器与寄存器
  • Python在AOIP(Audio Over IP)方面的应用探讨
  • C++20标准对线程库的改进:更安全、更高效的并发编程
  • 外包干了三年,快要废了。。。
  • 微服务网关终极进化:设计模式驱动的性能与可用性优化(四)
  • Java中的服务端点日志记录:AOP与SLF4J
  • 黑马头条第八天实战(上)
  • swift qwen2-vl推理及加载lora使用案例
  • 如何使用 Choreographer 进行帧率优化
  • 稳定驱动之选SiLM5350系列SiLM5350MDBCA-DG单通道隔离栅极驱动器(带内部钳位):工业自动化的可靠伙伴
  • 鸿蒙OpenHarmony【轻量系统芯片移植】内核移植
  • 多字节字符和宽字符
  • C++缺省参数
  • 深度学习中的常用线性代数知识汇总——第一篇:基础概念、秩、奇异值
  • MATLAB | R2024b更新了哪些好玩的东西?