Python解决方案:获取双向链表中给定和的数对2025年1月5日 | 阅读 5 分钟 在这个问题中,我们给定一个双向链表和一个正整数。我们必须找到值加起来等于给定数字的节点对。此问题的一个约束是,我们必须以恒定的空间复杂度解决它。 让我们看一个例子来理解这个问题 示例 输入: head = 2 ó 3 ó 6 ó 4 ó 5 ó 1 ó 7 ó 9 ó 8 ó 0, x = 10 输出 (6, 4), (9, 1), (8, 2), (3, 7) 方法 - 1解决此问题的基本方法是遍历链表。在每次迭代中,使用另一个循环来遍历剩余的链表。在每次内部循环迭代中,检查节点值是否加到 x。如果是,则将节点对存储在列表中。最后,我们将返回对的列表。 代码 输出 The pairs are [[2, 8], [1, 9], [3, 7], [6, 4]] 时间复杂度: 我们使用了非线性循环来遍历链表。这两个循环的时间复杂度都是 O(n)。因此,最终的时间复杂度将是 O(n) * O(n),等于 O(n ^ 2)。 空间复杂度: 我们使用了额外的空间来存储对。除此之外,我们没有使用任何额外的空间;因此,此算法的空间复杂度是恒定的,即 O(1)。 方法 - 2有一个比之前的方法好得多的方法。我们将使用双指针技术来查找和等于 x 的节点对。我们现在将讨论该问题的算法。 我们将在程序开始时初始化两个指针。一个指针将指向给定双向链表开头处的节点,即链表的头节点。第二个指针将指向链表末尾的节点。我们将运行一个循环,使第二个指针指向链表的最后一个节点。 然后,我们将启动一个 while 循环。当两个指针交叉时,while 循环将结束。如果从链表头部开始,第一个指针在最后一个指针的后面。 在每次迭代中,我们将检查当前指针节点的总和是否等于 x。如果是,我们将打印该特定对。 在此之后,我们将第一个指针向前移动,并将最后一个指针向后移动。 如果我们遇到两个指针都指向同一个节点的情况,则表示不存在这样的对,因此我们将打印结果。 下面是上述针对此问题的优化方法的 Python 代码。 代码 输出 ( 8 , 2 ) ( 3 , 7 ) ( 9 , 1 ) 时间复杂度: 我们使用线性循环来遍历链表;因此,时间复杂度是线性的,即 O(n) 辅助空间: 我们没有使用任何额外的空间;因此,空间复杂度是恒定的,即 O(1)。 |
? 简介 通过在 Python 的类声明中重载小于 (__lt__) 和大于 (__gt__) 运算符,您可以为它们创建自定义行为。您可以使用这些方法指定比较类实例的顺序。Python 按顺序调用这些方法...
阅读 4 分钟
对于任何 Python 开发,都要仔细进行并考虑到异常处理,这一点很重要。有时可能会发生异常,您可能希望捕获它、处理它,然后再将其重新抛出给上一层。这种技术是...
5 分钟阅读
? 在 Python 函数中设置默认参数值是一种便捷的方式,可以为参数分配一个默认值,当调用函数时没有为该参数提供任何参数时,将使用该默认值。此功能通过允许……来增强代码的灵活性和可读性。
阅读 17 分钟
Python 是一种功能强大且多样化的编程语言,为用户提供了许多复杂的工具和模块,使困难的操作更容易执行。然而,itertools 模块包含一些高效且节省空间的工具,用于迭代器操作。我发现一个有趣的事情是...
阅读 4 分钟
简介 Python中的ops库旨在简化事件驱动程序的创建和控制,尤其是运行在Juju环境中的charm。它使开发人员无需为观察事件、响应环境变化以及与编写其他应用程序或服务进行通信的困难而烦恼……
阅读 6 分钟
简介 一个世纪以来,数学家和计算机科学家一直着迷于构成数学世界的素数。“Isprime()”是 Python 编程世界中使用的重要函数,对于轻松查找素数是必需的。这篇详细的文章讨论了...
阅读 3 分钟
简介 一个名为笛卡尔的数学方法,由两个列表组成,可以产生一个时尚的列表,其中包含每个可行的有序对(元组),这些元组来自 2 个输入列表。它经常用于在各种应用程序中探索所有能力细节对,包括作为……
5 分钟阅读
?Python 是一种高级的、解释型的编程语言,以其简单性、多功能性和清晰性而闻名。Guido van Rossum 在八十年代末创造了 Python,从那时起,它已成为全球最受欢迎的编程语言之一。它的易用性...
阅读 13 分钟
介绍 在本教程中,我们将学习关于。市场研究表明,由于技术的快速变化,数据科学工作正在增加。这里有超过 70,000 个开放的数据科学家/分析师职位,如果您想成为一名数据科学家,您将得到很好的照顾...
14 分钟阅读
? 数据可视化是数据分析的关键组成部分。它涉及到交互式且视觉吸引力的图表和图形的出现,这些图表和图形以简单易懂的格式呈现复杂的数据。Matplotlib 是一个流行的 Python 库,提供了大量的工具来生成精美的可视化,这些可视化...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India