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

server/2024/10/22 13:38:53/

题目比较简单,重点是理解思想,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.ppmy.cn/server/116129.html

相关文章

在Ubuntu 20.04上安装pgAdmin 4

在Ubuntu 20.04上安装pgAdmin 4可以通过以下步骤完成: 1. 更新系统 首先,确保系统是最新的。打开终端并运行以下命令: sudo apt update && sudo apt upgrade2. 安装依赖项 pgAdmin 4 需要一些额外的依赖库。运行以下命令以确保这…

ZooKeeper相关原理

‌ZooKeeper(zk)服务端与客户端的关系是通过TCP长连接建立的,这种连接保证了ZooKeeper服务端与客户端之间的通信和Watch事件的通知。‌ ZooKeeper是一个开源的分布式协调服务框架,它为分布式系统提供一致性服务。在ZooKeeper中&a…

组合总和IV(力扣---动态规划)

文章目录 1.题目描述2.解题思路3.代码实现 1.题目描述 题目描述见:组合总和IV 2.解题思路 视频参考: 组合总和IV 以上述的示例1为例: dp[4]的含义是什么?和为4的组合有多少种 一般动态规划是可以由前面的dp[3]推导而来的 dp[3…

Rabbitmq中得RPC调用代码详解

文章目录 1.RPC客户端2.RabbitMQ连接信息实体类3.XML工具类 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 直接上代码了 1.RPC客户端 …

Java 日志

日志就是为了将程序的运行状况保存到文件中去。 命名的一个小细节: 比如把信息保存到文件中这个方法的名字可以写为infoToFile,有个人为了偷懒,写成info2File,发现效果还挺好,一下就能分清两个单词,所以后…

【网络安全】-rce漏洞-pikachu

rce漏洞包含命令执行漏洞与代码执行漏洞 文章目录 前言 什么是rce漏洞? 1.rce漏洞产生原因: 2.rce的分类: 命令执行漏洞: 命令拼接符: 常用函数: 代码执行漏洞: 常用函数: 分类&…

【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)

本文项目编号 T 027 ,文末自助获取源码 \color{red}{T027,文末自助获取源码} T027,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 。…