# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
#
# @param head1 ListNode类
# @param head2 ListNode类
# @return ListNode类
#
class Solution:
def addInList(self , head1 , head2 ):
# write code here
p = self.reverseList(head1)
q = self.reverseList(head2)
head = self.addTwoNumbers(p, q)
return self.reverseList(head)
def reverseList(self, head):
pre = None
while head:
next = head.next
head.next = pre
pre = head
head = next
return pre
# 先反转链表,然后从后向前加,再反转链表
def addTwoNumbers(self, l1, l2):
res = ListNode(0);
resTemp = res
flag = 0
nextSum = 0
while l1 != None and l2 != None:
if flag == 0:
p = l1.val + l2.val
res.val = p % 10
nextSum = int(p / 10)
flag += 1
else:
p = l1.val + l2.val + nextSum
resTemp.next = ListNode(p%10)
resTemp = resTemp.next
nextSum = int(p / 10)
l1 = l1.next
l2 = l2.next
while l1:
p = l1.val + nextSum
resTemp.next = ListNode(p%10)
resTemp = resTemp.next
nextSum = int(p / 10)
l1 = l1.next
while l2:
p = l2.val + nextSum
resTemp.next = ListNode(p%10)
resTemp = resTemp.next
nextSum = int(p / 10)
l2 = l2.next
if nextSum != 0:
resTemp.next = ListNode(1)
return res
05-21
179
04-25
141
10-10