这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.题目请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个
这篇文章将为大家详细讲解有关Java复杂链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof
首先我们逐个将节点复制并且和原来的链表连起来得新链表;
然后再构建新链表的random 指向。当访问原节点 cur
的随机指向节点 cur.random
时,对应新节点 cur.next
的随机指向节点为 cur.random.next
将得到的新链表之间的复制节点拆分出来连成一个复制链表,拆分成原链表和复制链表。
链表图
复制节点
将复制节点的random.next 连接起来
拆分成两个链表
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复杂链表的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
--结束END--
本文标题: Java复杂链表的示例分析
本文链接: https://lsjlt.com/news/321401.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0