leetcode 2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章