#题目
2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
#解析
思路历程:
首先题目是个链表,就不能用列表的下标来直接遍历
输出的链表节点是由前俩个链表的数相加构成的
所以就可以直接从链表里面把俩个数构成起来,然后再相加就省去了记录进位(有些用的是每个节点相加,记录进位)
要排除链表里面都为0的特殊情况
#初始链表
head = new_list = ListNode()
def num(a):
sum = 0
i = 0
while a:
sum += a.val * 10**i #把数字和起来
a = a.next
i += 1
return sum
#相加
new = num(l1) + num(l2)
if new == 0: #先排除为0的结果
new_list.next = ListNode(new)
while new > 0: #转换为链表
a = new % 10
new //= 10
new_list.next = ListNode(a)
new_list = new_list.next
return head.next