题目描述
解法
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if l1==None:
return(l2)
if l2==None:
return(l1)
carry=0 #满足10向前进位
dummy=ListNode(0) #最前面链表的占位
p=dummy
while l1 and l2:
p.next=ListNode((l1.val+l2.val+carry)%10) # 链表的下一位,对10取余的值为下一位
carry=(l1.val+l2.val+carry)//10 #对10取商,作为向前的进位
l1=l1.next
l2=l2.next
p=p.next
# 当l1与l2位数不同时的情况
if l1:
while l1:
p.next=ListNode((l1.val+carry)%10)
carry=(l1.val+carry)//10
l1=l1.next
p=p.next
if l2:
while l2:
p.next=ListNode((l2.val+carry)%10)
carry=(l2.val+carry)//10
l2=l2.next
p=p.next
#当最后一位向前有进位时
if carry==1:
p.next=ListNode(1)
return dummy.next