Python 两个链表相加求和

本文介绍如何在Python中实现两个链表表示的整数相加,要求空间复杂度O(n),时间复杂度O(n)。首先创建新链表存储结果,遍历两个链表并相加,处理进位。如果遍历后仍有进位,则在结果链表末尾添加新节点。最后,由于链表是从高位到低位,需要反转链表得到正确结果。
摘要由CSDN通过智能技术生成

一、描述

假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。

给定两个这种链表,请生成代表两个整数相加值的结果链表。

数据范围:0 \le n,m \le 10000000≤n,m≤1000000,链表任意值 0 \le val \le 90≤val≤9
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)

例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。

示例1:

输入:[9,3,7],[6,3]

返回值:{1,0,0,0}

示例2:

输入:[0],[6,3]

返回值:{6,3}

备注:

1 <= n, m <= 10^6
0 <= Ai, Bi ​<= 9

二、思路解析:

1、首先,创建一个新的空链表,用来存储两个链表相加的结果,存储过程中,需要定义一个指针,用来遍历存储链表。
2、接着,我们可以从两个链表的头节点开始,依次遍历它们的每一个节点,将它们对应位置的数字相加,并记录进位(注意:)
3、两相加链接,可能位数相同,或者不同,不同情况下,就存在一个来链表遍历完,另外一个链表还有位数的情况,这时,可以直接将另一个链表剩余的部分接到新链表的后面(注意,需要考虑进位)。
4、最后,如果遍历完成后还有进位,我们就需要在结果链表的末尾添加一个新节点,存储进位。
 

------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇咔咔咔~

good good study

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值