Java复杂链表的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.题目请实现 copyRandomList 函数,复制一个复杂
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网科技官网
厦门中拓互联网络科技有限公司
互联网 科技创新
互联网与新科技
紫鲸互联网科技
互联网科技视频
亿账通互联网科技
互联网科技logo
中国互联网金融科技基金
深圳卡尔迅互联网科技有限公司怎么样
老年人脱离互联网科技的作文
互联网和黑科技的看法
互联网科技公司有风险吗
互联网领先科技宣传片
互联网科技数字货币
互联网风格科技公司名称
抖集互联网科技技术咨询
求路客互联网科技电话
高科技和互联网的现代国家
河南真二互联网科技有限公司
腾讯阿里互联网科技
互联网科技革命
火传媒上海互联网科技
栖莱科技互联网股份有限公司
工业互联网等科技实现智能化赋能
互联网第三次科技革命特征
小米互联网科技园入驻
互联网企业科技类企业如何做账
雨阳互联网卡科技有限公司