题解 | 链表相加(二)
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head1 ListNode类
# @param head2 ListNode类
# @return ListNode类
#
class Solution:
def reverselist(self,Head:ListNode):
if Head == None:
return None
cur = Head
pre = None
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
# write code here
# 是先反转后再相加
if head1 == None:
return head2
if head2 == None:
return head1
head1 = self.reverselist(head1)
head2 = self.reverselist(head2)
res = ListNode(-1)
head = res
carry = 0 #进位
while head1 != None or head2 !=None or carry !=0:
val1=0 if head1 == None else head1.val
val2 = 0 if head2 ==None else head2.val
tmp = val1+val2+carry
carry = tmp//10
tmp %=10
head.next = ListNode(tmp)
head = head.next
if head1:
head1 = head1.next
if head2:
head2 = head2.next
return self.reverselist(res.next)
