Java复杂链表的示例分析
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.题目请实现 copyRandomList 函数,复制一个复杂
千家信息网最后更新 2024年11月17日Java复杂链表的示例分析
这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1.题目
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof
2.解法
2.1 拼接+拆分
首先我们逐个将节点复制并且和原来的链表连起来得新链表;
然后再构建新链表的random 指向。当访问原节点 cur
的随机指向节点 cur.random
时,对应新节点 cur.next
的随机指向节点为 cur.random.next
将得到的新链表之间的复制节点拆分出来连成一个复制链表,拆分成原链表和复制链表。
链表图
复制节点
将复制节点的random.next 连接起来
拆分成两个链表
3.代码
class Solution { public Node copyRandomList(Node head) { if(head == null) { return null; } //1.复制各个链表,并连接 Node cur = head; while (cur != null) { //复制 Node prev = new Node(cur.val); prev.next = cur.next; //连接 cur.next = prev; //往后走 cur = prev.next; } //2.构建各新节点的random 指向 cur = head; while (cur != null) { if (cur.random != null) { cur.next.random = cur.random.next; } cur = cur.next.next; } //3.拆分复制的链表 cur = head.next; Node node = head; Node nodeNext = head.next; while (cur.next != null) { node.next = node.next.next; cur.next = cur.next.next; node = node.next; cur = cur.next; } node.next = null;//尾节点 return nodeNext;//返回新链表的头结点 }}
关于"Java复杂链表的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
节点
指向
复杂
篇文章
示例
分析
指针
更多
题目
不错
实用
两个
之间
代码
内容
函数
文章
来源
知识
结点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安装软件显示数据库不符合
王牌战争服务器15天刷新时间
株洲市网络安全和信息化专家库
易语言查找数据库指定内容
国外空间服务器
数据库 学生成绩系统
宝塔MySQL服务器启动不了
天津文件服务器机柜云主机
数据库中csr
四川服务器虚拟化操作
数据库为什么不能写入
广东通用软件开发价格表格
it软件开发价格如何计算
佳木斯商城分销软件开发
亚马逊网络安全模式
二手服务器cpu好不好
社区团购软件开发套装
软件开发团队的职务有哪些
方舟非官方服务器开代码
软件开发行业培训
长沙山星网络技术有限公司
数据库中一个关系代表一个
戴尔服务器型号怎么看
逻辑管理器服务器
软件开发师职业发展路径
中化集团网络安全运营中心
达内网络安全管理
日喀则天气预报软件开发
万达bim软件开发公司
网络安全运维职业等级考试