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

 

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