LeetCode——445.两数相加II

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        pre1,pre2 = None,None
        cur1,cur2 = l1,l2


        #先翻转两个链表
        while cur1:
            #先断
            tmp =cur1.next
            cur1.next = pre1
            
            #再移动
            pre1 = cur1
            cur1 = tmp
        
        while cur2:
            tmp = cur2.next
            cur2.next = pre2

            pre2 = cur2
            cur2 = tmp

        dummpy = ListNode(0)
        pre = dummpy
        carry  = 0 
        while pre1 or pre2:
            x = pre1.val if pre1 else 0
            y = pre2.val if pre2 else 0

            Sum = x+y+carry
            carry = Sum//10

            pre.next = ListNode(Sum%10)
            pre = pre.next
            
            if pre1:
                pre1 = pre1.next
            if pre2:
                pre2 = pre2.next

        if carry:
            pre.next = ListNode(carry)
        

        #再翻转链表
        res = None
        cur = dummpy.next
        while cur:
            tmp = cur.next
            cur.next = res

            res = cur
            cur = tmp

        return res
  • 先翻转两个两个链表
  • 然后再进行相加
  • 然后再执行翻转链表

猜你喜欢

转载自blog.csdn.net/weixin_37724529/article/details/112980615