# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
result = ListNode(0) #保存返回的结果
final = [] #临时列表
flag = 0 #进位标记
while(l1!=None and l2!= None):
temp = l1.val+l2.val+flag
if(temp<10):
final.append(temp)
flag = 0
elif(temp == 10):
final.append(0)
flag = 1
elif(temp>10):
final.append(temp-10)
flag = 1
l1 = l1.next
l2 = l2.next
while(l1!=None):
if(l1.val+flag<10):
final.append(l1.val+flag)
flag = 0
elif(l1.val+flag==10):
final.append(0)
flag = 1
elif(l1.val+flag>10):
final.append(l1.val+flag-10)
flag = 1
l1 = l1.next
while(l2!=None):
if(l2.val+flag<10):
final.append(l2.val+flag)
flag = 0
elif(l2.val+flag==10):
final.append(0)
flag = 1
elif(l2.val+flag>10):
final.append(l2.val+flag-10)
flag = 1
l2 = l2.next
#在l1和l2都遍历完成的情况下,仍然存在进位
if(flag!=0):
final.append(flag)
result = ListNode(final[0])
pre = result
i=1
#将列表中的结果转为ListNode类型,方便返回题目中要求的结果形式
while(i<len(final)):
temp = ListNode(final[i])
pre.next = temp
pre = temp
i+=1
return result