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安全错误
数据库的锁怎样保障安全
mysql免费服务器
根据县委网络安全工作
公司网络安全新技术概述
从数据库表中找出乱码的数据
浏览器未连接上服务器
深圳软件开发刘欢
以下是数据库系统
通用安全服务器
数据库工程师软考证书
数据库课程设计主题
软件开发教学视频百度云
网络安全常见误区
软件开发岗工作小结
中国互联网服务器第一人
数据库创建查询题及答案
组织网络安全知识培训
淄博应用软件开发定制
学校有没有网络安全责任制
数据库更改品名扫不出来
计算机网络技术会修电脑吗
云服务器可以干点什么赚钱的事
安徽省华山软件开发公司
网易端游跟手游的服务器不能通吗
软件开发和ui设计
支付宝最厉害的数据库
万芳数据库论文查询
公有云和服务器的区别
软件开发者页面开头注释
重庆华宇集团软件开发
网络安全智能决策pomdp