题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210307114502819.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTUzNzU3,size_16,color_FFFFFF,t_70)
代码1
class ListNode():
def __init__(self, x):
self.val = x
self.next = None
class Solution():
def addTwoNumbers(self, l1, l2):
if l1 is None:
return l2
if l2 is None:
return l1
dummy=ListNode(0)
p=dummy
carry=0
while l1 or l2:
tmpsum=0
if l1:
tmpsum=l1.val
l1=l1.next
if l2:
tmpsum=tmpsum+l2.val
l2=l2.next
p.next=ListNode((tmpsum+carry)%10)
carry=(tmpsum+carry)//10
p=p.next
if carry==1:
p.next=ListNode(1)
return dummy.next
if __name__ == '__main__':
sol = Solution()
l1 = ListNode(2)
l1.next = l11 = ListNode(4)
l11.next = l12 = ListNode(5)
l2 = ListNode(5)
l2.next = l21 = ListNode(6)
l21.next = l22 = ListNode(4)
res = sol.addTwoNumbers(l1, l2)
while res:
print(res.val)
res = res.next
代码2
class ListNode():
def __init__(self, x):
self.val = x
self.next = None
class Solution():
def AddTwoNumebers(self, l1, l2):
dummy = ListNode(0)
p = dummy
carry = 0
while l1 and l2:
p.next = ListNode((l1.val + l2.val + carry) % 10)
carry = (l1.val + l2.val + carry) // 10
l1 = l1.next
l2 = l2.next
p = p.next
'''
p.next和carry计算完之后
l1需指向下一节车厢
l2也指向下一节车厢
存放和的火车p也需指向下一节车厢
'''
while l1:
p.next = ListNode((l1.val + carry) % 10)
carry = (l1.val + carry) // 10
l1 = l1.next
p = p.next
while l2:
p.next = ListNode((l2.val + carry) % 10)
carry = (l2.val + carry) // 10
l2 = l2.next
p = p.next
if carry != 0:
p.next = ListNode(1)
return dummy.next
if __name__ == "__main__":
l1 = ListNode(2)
l1.next = ListNode(4)
l1.next.next = ListNode(5)
l2 = ListNode(5)
l2.next = ListNode(6)
sol = Solution()
res = sol.AddTwoNumebers(l1, l2)
while res:
print(res.val)
res = res.next