
# 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
- 先翻转两个两个链表
- 然后再进行相加
- 然后再执行翻转链表