原问题链接:https://leetcode.com/problems/add-two-numbers/#/description
问题定义:给出两个链表,每个链表的逆序表示一个数,求两个数相加之和。返回亦为逆序的链表。
思路:分别从链表头部开始相加,相加值为两数之和%10,同时产生进位=两数之和/10,进位值要算入下一次的两数相加中。最后可能有一条链表未加完,要把剩余的结点接入到结果链表中
class Solution(object):
def addTwoNumbers(self, l1, l2):
head=tail=ListNode(0)
jin,val=[0,0]
while l1!=None and l2!=None:
val,jin=(l1.val+l2.val+jin)%10,(l1.val+l2.val+jin)//10 #注意使用的是地板除
l=ListNode(val)
tail.next,tail,l1,l2=l,l,l1.next,l2.next
while l1!=None:
val,jin=(l1.val+jin)%10,(l1.val+jin)//10
l=ListNode(val)
tail.next,tail,l1=l,l,l1.next
while l2!=None:
val,jin=(l2.val+jin)%10,(l2.val+jin)//10
l=ListNode(val)
tail.next,tail,l2=l,l,l2.next
if jin>0:
l=ListNode(jin)
tail.next,tail=l,l
return head.next