LeetCode里的一个题,没注意到输入类型是列表格式,所以用类结点形式的链表写出来了,做个记录
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def appendResult(self, result, pre):
p = ListNode(None)
if result.val == None:
result.val = pre.val
else:
p = result
while p.next!=None:
p = p.next
p.next = pre #17
return result
def addTwoNumbers(self, l1, l2):
result = ListNode(None); count1 = 0; count2 = 0; Cout = 0
#确定哪条链长
pl1 = l1; pl2 = l2
while pl1 != None:
pl1 = pl1.next
count1 += 1
while pl2 != None:
pl2 = pl2.next
count2 += 1
if count1 >= count2:
lon = l1; short = l2
else:
lon = l2; short = l1
# 开始相加
while lon!=None or short!=None:
pr = ListNode(None)
if short != None:
pr.val = (Cout + lon.val + short.val)%10
Cout = int((Cout + lon.val + short.val)/10)
self.appendResult(result, pr)
short = short.next
lon = lon.next
elif short == None and lon != None:
pr.val = (Cout + lon.val)%10
Cout = int((Cout + lon.val)/10)
self.appendResult(result, pr)
lon = lon.next
if Cout ==1:
self.appendResult(result, ListNode(Cout))
return result