力扣 2鍊錶實現兩數相加

2021-10-07 17:56:10 字數 1434 閱讀 5102

題目描述

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)輸出:7 -> 0 -> 8原因:342 + 465 = 807
解題思路

乙個指標記錄是否進製,遍歷完煉表後,如果有鍊錶還沒遍歷完,就要單獨計算

class listnode:

def __init__(self, x):

self.val = x

self.next = none

class solution:

def addtwonumbers(self, l1, l2):

prenode = listnode(0)

lastnode = prenode

val = 0

while val or l1 or l2:

val, cur = divmod(val + (l1.val if l1 else 0) + (l2.val if l2 else 0), 10)

lastnode.next = listnode(cur)

lastnode = lastnode.next

l1 = l1.next if l1 else none

l2 = l2.next if l2 else none

return prenode.next

def generatelist(l):

prenode = listnode(0)

lastnode = prenode

for val in l:

lastnode.next = listnode(val)

lastnode = lastnode.next

return prenode.next

def printlist(l):

while l:

print("%d, " %(l.val), end = '')

l = l.next

print('')

if __name__ == "__main__":

l1 = generatelist([1, 5, 8])

l2 = generatelist([9, 1, 2, 9])

s = solution()

sum = s.addtwonumbers(l1, l2)

printlist(sum)

力扣 2 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。將兩個鍊錶補成長度一致的,短的在後邊補零。...

力扣2 兩數相加

2.兩數相加 難度 中等 描述 給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2...

力扣日記 002兩數相加 鍊錶

不說廢話,直接上 思路是用乙個while迴圈和乙個加權數來獲得鍊錶中完整的數值,然後同理反向將最終結果轉化為鍊錶,唯一的問題是迴圈中不知道該怎樣儲存節點的值,於是放到了列表裡。definition for singly linked list.class listnode def init self...