给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例

两个数据相加是否相等(算法两数相加)(1)

提示方法一:模拟

思路与算法

首先,我们按照示例中的结果发现我们可以同时遍历这两个链表,按照同一方向,相同的位置的数字进行类加

举例说明:

n1、n2代表两个链表相同位置的值,carry代表进位值。最终结果的链表的相同位置的值为 (n1 n2 carry) % 10 ,新的进位值为(n1 n2 carry)/ 10。

如果两个链表的长度不同,则可以认为短的链表的后面有若干个 0 。

最后,如果链表遍历结束后,如果carry > 0,那还需要在最后的链表上再附加一个节点,节点的值为 carry。

代码如下:

两个数据相加是否相等(算法两数相加)(2)

复杂度分析写在最后

本文内容出处是力扣官网,希望和大家一起刷算法,在后面的路上不变秃但是变强!

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

,