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