Python中将链表表示的两个数字相加2025年1月5日 | 16 分钟阅读 在此问题中,给定两个数字。这两个数字分别写在链表的每个节点中。因此,我们得到两个表示这两个数字的链表。我们的任务是相加这两个数字并找到它们的和。我们必须以链表的形式返回它们的和。 让我们看一个例子来理解这个问题 输入 输入1:4 → 8 → 1 输入2:3 → 8 → 9 输出 8 → 7 → 0 第一个数字是 481,第二个数字是 389。输出将是 481 + 389 = 870 输入 输入1:9 → 9 → 9 → 9 → 9 输入2:1 输出 1 → 0 → 0 → 0 → 0 → 0 第一个数字是 99999,第二个数字是 1。输出将是 99999 + 1 = 100000 方法 - 1这是一个直接的方法。我们将使用循环遍历链表并到达链表的末尾。我们将通过在节点较少的链表开头添加值为 0 的节点,使两个链表的长度相等。然后,我们将使用递归函数来求和。此递归函数将接收节点,相加值并返回进位。 这是此方法的算法。
以下是此方法的 Python 代码。 代码 输出 The first linked list is: 6 3 2 9 The second linked list is: 3 8 9 The resultant linked list is: 6 7 1 8 方法 - 2在此问题中,我们有两个链表。让我们举一个例子来理解这种方法。第一个链表是 4 → 8 → 1。这个数字是 481。我们可以使用单位和数字的数学概念从链表中提取数字。我们可以将数字乘以 10 ^ n,其中 n 是数字的位值。将所有这些位值相加后,我们将得到所需的数字。以这种方式,我们将从第二个链表 3 → 8 → 9 中提取数字,即 389。我们将相加这两个数字,得到和 870。然后,最后我们将创建一个包含和的链表,并返回这个最终的链表,它将是 8 → 7 → 0。 代码 输出 The first linked list is: 6 3 2 9 The second linked list is: 3 8 9 The resultant linked list is: 6 7 1 8 时间复杂度:此方法的时间复杂度是线性的。我们仅使用一个循环遍历链表一次。因此,最终时间复杂度为 O(m + n),其中 m 和 n 是各个链表中的节点数。 辅助空间:我们创建了一个结果链表,它将占用 O(m + n) 的内存。 方法 - 3在此方法中,我们将使用堆栈数据结构来相加两个链表。我们将使用堆栈存储链表的节点,然后稍后使用这些堆栈将前两个堆栈节点值的和填充到第三个堆栈中。这是此方法的算法。
代码 输出 The first linked list is: 6 3 2 9 The second linked list is: 3 8 9 The resultant linked list is: 6 7 1 8 时间复杂度: O(n),其中 n 是较大列表的长度。 辅助空间: O(n),额外的空间用于存储堆栈的元素。 方法 - 4在此方法中,我们将通过遍历节点数较多的链表来相加链表。我们将首先计算两个链表的长度。然后,我们将比较长度并遍历长度比另一个链表长的链表。我们将遍历这个链表,直到两个链表的长度相同。现在,我们将同时遍历两个链表直到末尾。为了相加节点,我们将使用回溯来处理进位项。这样,最后,我们将得到包含相加节点的链表的头节点。以下是此方法的 Python 代码。 代码 输出 The first linked list is: 6 3 2 9 The second linked list is: 3 8 9 The resultant linked list is: 6 7 1 8 方法 - 5在此方法中,我们将通过反转两个链表来相加它们,而无需添加零。然后,我们将继续相加节点并创建一个用于相加结果的节点。最终,我们将得到最终链表的头节点。 以下是此方法的 Python 程序。 代码 输出 The first linked list is: 6 3 2 9 The second linked list is: 3 8 9 The resultant linked list is: 6 7 1 8 下一个主题Python 中的有向图环检测 |
创建 Floyd 三角形是初学者学习编程的一个常见练习,因为它有助于理解嵌套循环和序列生成。在接下来的教程中,我们将学习如何使用 Python 编程语言来构建一个。但在开始之前,让我们...
7 分钟阅读
Python 中的 TLS/SSL 简介 TLS (Transport Layer Security) 和 SSL (Secure Sockets Layer) 是用于保护网络通信安全的加密协议。在 Python 中,`ssl` 模块实现了这些协议,提供了创建安全连接的功能。通过包装套接字,开发人员可以...
阅读 3 分钟
在 Python 中,排序数据是一项常见操作,尤其是在处理字典或 Counter 对象等集合时。collections.Counter 类是 Python 标准库的一部分,专为计数可哈希对象而设计,常用于计算词频、库存跟踪等任务...
7 分钟阅读
Python 是一种高级解释型编程语言,以其简洁和清晰而闻名。Guido van Rossum 在 20 世纪 80 年代末创建它,强调代码清晰度和简洁的语法,使其成为初学者和专家都理想的语言。Python 具有一些...
阅读9分钟
OpenCV 简介 OpenCV(开源计算机视觉库)是一个开源的 PC 视觉和 AI 编程库。它提供了大量的图像和视频处理功能,包括对象定位、面部识别、姿态识别等等。OpenCV 用 C++ 编写,...
7 分钟阅读
Python 中的“键盘中断”一词描述了用户通过按 Ctrl+C 键盘快捷键来停止正在运行的程序或脚本。这种中断通常用于平滑地停止程序的执行,以便用户可以重新控制终端或命令行。Python……
7 分钟阅读
Vaex 是一个高性能的 Python 模块,用于处理大型数据集。它使客户能够有效地处理、查看和分析不适合内存的数据,而无需将其分散到集群中。Vaex 的核心外 DataFrame 功能使其特别适合...
阅读 8 分钟
葡萄酒分类简介 世界各地有各种各样的葡萄酒,例如起泡酒、甜点酒、流行酒、餐酒和陈年葡萄酒。您可能想知道如何确定哪种葡萄酒好,哪种不好。机器学习是解决之道...
阅读 8 分钟
Python 中 matplotlib.pyplot.clf() 简介 Matplotlib 是一个强大的 Python 包,允许您创建静态、动画和交互式可视化。它通常用于创建图形和图表,使其成为数据分析和科学思考的重要工具。Pyplot,Matplotlib 的一个...
阅读 4 分钟
简介 在当今的分析性信息环境中,数据质量对于企业的有效运作和开展研究至关重要。然而,重复是普遍存在的问题,这意味着相同的数据集会一次又一次地出现在不同的数据集中。这不仅会增加存储空间,还会...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India