题目描述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
思路
以两个链表的遍历为循环是不够的,因为要考虑进位,如果出现最终位的进位时是比原两个链表更长的
解题方法
同时遍历两个链表,对应位置相加并记录进位,注意两链表的长度可能不一样,并且最终得到的链表也可能不一样。计算前应该记录头节点,以便返回最终结果。
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
num = 0
head = ListNode()
node = head
while l1 or l2 or num:
if l1:
num += l1.val
l1 = l1.next
if l2:
num += l2.val
l2 = l2.next
node.next = ListNode(num % 10)
node = node.next
num = num // 10
return head.next