一、描述
假设链表中每一个节点的值都在 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、最后,如果遍历完成后还有进位,我们就需要在结果链表的末尾添加一个新节点,存储进位。
------------------------------------------------------------------------------------------------------