classListNode():def__init__(self, val):ifisinstance(val,int):
self.val = val
self.next=Noneelifisinstance(val,list):
self.val = val[0]
self.next=None
cur = self
for i in val[1:]:
cur.next= ListNode(i)
cur = cur.nextdefgatherAttrs(self):return", ".join("{}: {}".format(k,getattr(self, k))for k in self.__dict__.keys())def__str__(self):return self.__class__.__name__ +" {"+"{}".format(self.gatherAttrs())+"}"defaddTwoNumbers(l1, l2):ifisinstance(l1,list):
l1 = ListNode(l1)
l2 = ListNode(l2)
re = ListNode(0)#创建一个空链表来保存结果
r = re #r指向首指针
carry =0#创建一个变量来保存进位的结果
re_next =0#创建一个value_next 来保存进位的结果while(l1 or l2):
x = l1.val if l1 else0
y = l2.val if l2 else0
s = x + y + carry
carry = s//10
r.next= ListNode(s%10)#首指针的next值为s%0
r = r.next#r指向第下一个值if(l1!=None):l1 = l1.next#移向下一个结点取值if(l2!=None):l2 = l2.next#循环结束之后,注意如果还有进位需要保存if(carry>0):
r.next= ListNode(1)return re.nextprint(addTwoNumbers([2,4,3],[5,6,4]))