编写 Python 代码展平链表2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将编写 Python 代码来扁平化给定的链表。给定的链表由每个节点表示一个链表,并包含两个指向其类型的指针。 第一个指针指向下一个节点,第二个指针(bottom 指针)指向该节点作为头部的链表。每个子链表都按排序顺序排列。 这里的扁平化意味着所有节点都必须出现在同一级别,同时保持排序顺序。 让我们看问题陈述。 问题陈述示例 - 输入 输出 5-> 7-> 8- > 10 -> 19-> 20-> 22-> 28-> 30-> 35-> 40-> 45-> 50. 示例 - 2 输入 输出 5->7->8->10->19->22->28->30->50 解决方案在此方法中,我们首先将其转换为常规列表,然后扁平化元素。让我们理解以下示例。 示例 - 输出 Flattened linked list: [5, 7, 8, 30, 10, 19, 28, 22, 50] 解释 - 在上面的代码中,我们首先创建了带有 next 和 next to next 指针的节点。我们创建了 flatten_linked_list(),它接受链表的 head 作为输入。它通过遍历链表并将每个节点的 data 添加到列表中来将链表转换为常规列表。然后,它通过递归调用 flatten_linked_list 函数来扁平化列表,以处理遇到的任何子节点。最后,它返回扁平化后的列表。 该程序创建了示例链表,如前所述,然后调用链表 head 上的 flatten_linked_list() 函数。生成的扁平化列表将作为输出打印。 示例 - 输出 Flattened linked list: [5, 7, 8, 30, 10, 19, 28, 22, 50] 解释 - 在上面的代码中,我们创建了一个 Node 类,它表示链表中的一个节点。每个节点都有一个 data 属性来存储值和两个指针:right 和 down。right 指针用于水平连接节点,down 指针用于垂直连接节点。 该代码还定义了一个 LinkedList 类,该类具有在列表开头插入节点、打印列表以及扁平化列表的方法。 在 LinkedList 类中,insert_at_beginning() 方法接受 head 节点(head_ref)的引用和 data 作为输入。它使用给定的 data 创建一个新节点,并将其 down 指针设置为当前 head。然后,它将 head_ref 更新为指向新节点,从而有效地将新节点插入到列表的开头。返回更新后的 head_ref。 print_list() 方法遍历链表,并打印每个节点的 data,沿着 down 指针移动,直到到达列表末尾。 merge_lists() 方法是一个递归函数,它接受两个列表(a 和 b)作为输入,并将它们合并成一个单一的排序列表。 它比较每个列表 head 处节点的 data,并递归地合并剩余的列表。 合并是通过将当前节点的 down 指针更新为带有剩余节点的递归调用的结果来完成的。当前节点的 right 指针被设置为 None,以确保扁平化的结构。 flatten() 方法是扁平化给定多级链表的主要函数。它以 root 节点作为输入,并通过执行以下步骤递归地扁平化列表: 如果 root 为 None 或右侧没有节点(root.right 为 None),则返回 root。 它递归调用 flatten 来扁平化右侧的子列表。 然后,它使用 merge_lists 方法将当前 root 与扁平化后的右侧子列表合并。 最后,它返回扁平化后的 root。然后,创建 LinkedList 类的实例。 使用 insert_at_beginning() 方法在列表开头插入节点,创建多级结构。 通过调用链表 head 上的 flatten 方法来扁平化列表。 最后,使用 print_list 方法打印扁平化后的列表。 |
scipy.stats.maxwell(),被称为第二类帕累托分布,定义了麦克斯韦连续随机变量。它是从通用方法继承的 rv_continuous 类的一个实例。它通过添加特定于此分布的细节来完善这些技术。scipy.stats.maxwell() 中包含的参数有:q:...
阅读 3 分钟
什么是 IDE?集成开发环境(IDE)软件使用编辑器和编译器等工具来构建程序。它在用多种语言编程时具有很大的潜力,可以成为一个有用的工具。它是一块软件,结合了所有...
11 分钟阅读
Python 具有特定的内置函数,因此它支持在多个顺序容器中使用多种循环技术。这些循环函数和方法对于竞争性编程非常有用。它可以在用户必须使用一些特定循环技术的不同项目中使用...
阅读 3 分钟
在本教程中,我们将学习如何使用 Python 内置的 fuzzyWuzzy 库匹配字符串,并通过各种示例确定它们的相似度。简介 Python 提供了几种比较两个字符串的方法。以下是几种主要方法。使用正则表达式 简单比较 使用 dfflib 但是...
阅读 6 分钟
Bokeh 是 Python 的一个库,用于通过绘制图形和图表进行数据可视化。输出可以在不同平台上获得,例如 Notebook、HTML、JavaScript 和浏览器。Figure 类用于在图表上创建新图形,并且...
阅读 3 分钟
假设您已经使用 sched 模块或 datetime 模块工作过,大多数人会同意您最终需要对时间进行一些计划。假设您已经考虑了此类元素的扩展将如何持续存在,您可能也得出了一个结论,即可以编写...
5 分钟阅读
本文将以一维 K-means 聚类为主要议题。为了介绍该技术并阐明其思想,将使用一维的基本实现。在下一篇文章中,该概念将扩展到 N 维。本文将不仅关注...
14 分钟阅读
本课程旨在对Python的数据结构和算法进行简单介绍。通过实际且经过充分解释的示例,我们将介绍列表、集合、字典、元组等内置数据结构,以及一些用户定义的数据结构,如...
21 分钟阅读
在这个问题中,我们将得到两个已排序的数组。我们的任务是合并这两个给定的数组。然而,限制是,我们必须在不使用任何额外空间的情况下合并它们。因此,在对数组进行排序后,初始元素将位于...
阅读20分钟
YouTube 是世界上最受欢迎的视频分享网站,每天都有数百万用户在各种视频上发表评论。对于不同的研究或分析应用程序,从这些评论中提取信息可能是一个重要的资源。使用 Python 编程,可以轻松检索评论...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India