Java复杂链表的示例分析
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.题目请实现 copyRandomList 函数,复制一个复杂
千家信息网最后更新 2025年11月16日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安全错误
数据库的锁怎样保障安全
网络安全与隐私泄漏
千牛云服务器无法登录
数据库中if如何使用
网络安全软件学习app
服务器背面的接口
开源情报与网络安全的关系
狼人杀服务器错误3840
昌平电脑服务器回收
文件服务器权限管理系统
上海家校互通管理软件开发
网络安全比赛啥意思
大学生网络安全意识的重要性
保千里服务器
伪装蜜罐服务器诈骗
朝阳回收服务器公司
软件开发工程师技术培训
路由器域名服务器地址
GUI向数据库添加数据
从n个数里面选取m个数据库
文件存硬盘还是存数据库
数据库开发工程师的主要职责模板
软件开发企业的资格
海典服务器连接失败
南充软件开发外包
安徽dell服务器推荐
每隔一周数据库就会卡
ob数据库
从n个数里面选取m个数据库
英特尔服务器cpu铜牌银牌
无线网络技术有哪些特点