题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
#思路:链表反转,然后相加,然后再反转回来
class Solution:
def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
def revers(head: ListNode):
dummy = None
cur = head
while cur:
temp = cur.next
cur.next = dummy
dummy = cur
cur = temp
return dummy
head1 = revers(head1)
cur = head1
head2 = revers(head2)
b = 0
while head1 and head2:
a = (head1.val + head2.val+b) % 10
b = (head1.val + head2.val+b) // 10
head1.val = a
pre = head1
head1 = head1.next
head2 = head2.next
if head1 and not head2:
if head1.val +b < 10:
head1.val = (head1.val + b)
else:
if head1.next == None:
head1.next = ListNode((head1.val + b)//10)
else:
head1.next.val = (head1.val + b)//10 + head1.next.val
head1.val = (head1.val + b)%10
if head2 and not head1:
pre.next = head2
if head2.val +b < 10:
head2.val = (head2.val + b)
else:
if head2.next == None:
head2.next = ListNode((head2.val + b)//10)
else:
head2.next.val = head2.next.val + (head2.val + b)//10
head2.val = (head2.val + b)%10
if not head1 and not head2:
if b > 0:
head1 = ListNode(b)
return revers(cur)
# write code here
