给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
# 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:
# 将链表转换为列表
v1 = []
v2 = []
while l1:
v1.append(l1.val)
l1 = l1.next
while l2:
v2.append(l2.val)
l2 = l2.next
# 将列表反转
v1.reverse()
v2.reverse()
#将列表转换为整数
v1_value = int("".join([''.join([str(i) for i in v1])]))
v2_value = int("".join([''.join([str(i) for i in v2])]))
#将转换后的两个整数相加
v3_value = v1_value + v2_value
#求和后的结果转换为列表
v3 = [int(i) for i in str(v3_value)]
#将列表反转
v3.reverse()
#结立一个临时列表,用来保存求和的链表结果对象
tmp = []
for i in range(len(v3)):
#创建ListNode对象并添加入临时列表
tmp.append(ListNode(v3[i]))
# 将第一个节点赋值给l3(作为结果返回)
l3 = tmp[0]
# 对每个结点的next属性赋值
for i in range(len(tmp)):
if i+1<len(tmp):
tmp[i].next = tmp[i+1]
# 返回带完整的l3,由于是链表,只需要返回第一个结点即可
return l3