# 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: ListNode, head2: ListNode) -> ListNode:
# write code here
reversed1 = self.reverseList(head1)
reversed2 = self.reverseList(head2)
dummy = ListNode(0)
current = dummy
carry = 0
while reversed1 or reversed2 or carry:
val1 = reversed1.val if reversed1 else 0
val2 = reversed2.val if reversed2 else 0
total = val1 + val2 + carry
carry = total // 10
current.next = ListNode(total % 10)
current = current.next
if reversed1:
reversed1 = reversed1.next
if reversed2:
reversed2 = reversed2.next
result = self.reverseList(dummy.next)
return result
def reverseList(self, pHead):
if not pHead:
return None
prev = None
curr = pHead
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr =next_node
return prev