这篇文章主要为大家展示了“LeetCode如何实现复杂链表的复制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetCode如何实现复杂链表的复制”这篇文章吧。
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
[[7,null],[13,0],[11,4],[10,2],[1,0]]
O(N)
O(N)
class Solution: def copyRandomList(self, head: 'Node') -> 'Node': if not head: return None maps = {} # 第一遍遍历, 建立新的链表, 以及老节点到新节点的映射关系 copyHead = Node(head.val) origin, copy = head, copyHead maps[origin] = copy while origin.next: # 新建下一个节点, 并建立next关系 copy.next = Node(origin.next.val) origin = origin.next copy = copy.next maps[origin] = copy # 第二遍遍历, 处理random指针部分 origin, copy = head, copyHead while origin: if origin.random: # 如果老节点random指针指向非空的话, 就将当前新节点也指向随机节点对应的新节点 copy.random = maps[origin.random] origin = origin.next copy = copy.next return copyHead
以上是“LeetCode如何实现复杂链表的复制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4633874/blog/4546023