·445 两数相加2
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 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]
·这个解题思路就是先反转在相加就好了
·代码
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def reverse_list(self,head):
pre = None
cur = head
while cur:
post = cur.next
cur.next = pre
pre = cur
cur = post
return pre
def addnumbers(self,l1,l2):
res = ListNode(0)
cur = res
carry = 0
while l1 or l2:
x = l1.val if l1 else 0
y = l2.val if l2 else 0
num = x + y +carry
carry = num // 10
node = ListNode(num % 10)
cur.next = node
cur = cur.next
if l1:
l1 = l1.next
if l2:
l2 = l2.next
if carry > 0:
cur.next = ListNode(1)
return res.next
def addTwoNumbers(self, l1, l2):
l1 = self.reverse_list(l1)
l2 = self.reverse_list(l2)
result = self.addnumbers(l1,l2)
re_result = self.reverse_list(result)
return re_result