給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。
如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。
您可以假設除了數字 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