代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
#计算l1和l2最长长度
lenth = 0
p1 = l1
p2 = l2
while(p1!=None or p2!=None):
if p1 != None:
p1 = p1.next
if p2 != None:
p2 = p2.next
lenth += 1
p = ListNode()
head = ListNode()
#保存下一次进位用
jinWeiN = 0
for i in range(lenth):
#jinWei提取上次进位结果
jinWei = jinWeiN
temp = 0
if(l1 == None):
temp = l2.val
elif(l2 == None):
temp = l1.val
else:
temp = l1.val + l2.val
temp += jinWei
#判断下一位是否要进位
if(temp >= 10):
jinWeiN = 1
temp -= 10
else : jinWeiN = 0
n1 = ListNode(temp)
if i == 0:
p = n1
head = p
else:
p.next = n1
p = n1
if l1 != None:
l1 = l1.next
if l2 != None:
l2 = l2.next
#避免最后加到99+9出现结果为08类似的情况
if jinWeiN != 0:
n1 = ListNode(jinWeiN)
p.next = n1
return head
这一步可以写成
x = l1.val if l1 else 0
y = l2.val if l2 else 0
total = x + y + remainder