给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头
示例1:
输入:l1 = [7,2,4,3], l2 = [5,6,4]
输出:[7,8,0,7]
示例2
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[8,0,7]
示例3
输入:l1 = [0], l2 = [0]
输出:[0]
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
l1 = self.reverseLinkedList(l1)
l2 = self.reverseLinkedList(l2)
head = cur = ListNode()
val = tmp = 0
while tmp or l1 or l2:
val = tmp
if l1:
val = l1.val + val
l1 = l1.next
if l2:
val = l2.val + val
l2 = l2.next
tmp = val // 10
val = val % 10
# 实现链表的连接
cur.next = ListNode(val)
cur = cur.next
return self.reverseLinkedList(head.next)
def reverseLinkedList(self, inputList):
if not inputList:
return None
cur = inputList
preNode = None
while cur:
nextNode = cur.next
cur.next = preNode
preNode = cur
cur = nextNode
return preNode