2 兩數相加

2021-09-27 01:42:02 字數 877 閱讀 9851

將兩個鍊錶看成是相同長度的進行遍歷,如果乙個鍊錶較短則在前面補 0,比如987 + 23 = 987 + 023 = 1010

每一位計算的同時需要考慮上一位的進製問題,而當前位計算結束後同樣需要更新進製值

如果兩個鍊錶全部遍歷完畢後,進製值為 1,則在新鍊錶最前方新增節點 1

小技巧:對於鍊錶問題,返回結果為頭結點時,通常需要先初始化乙個預先指標 pre,該指標的下乙個節點指向真正的頭結點head。使用預先指標的目的在於鍊錶初始化時無可用節點值,而且鍊錶構造過程需要指標移動,進而會導致頭指標丟失,無法返回結果

class solution:

def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:

pre = listnode(-1) #預先指標

cur = pre

carry = 0

while l1 or l2:

x = l1.val if l1 else 0

y = l2.val if l2 else 0

s = x + y + carry

carry = s //10 #計算進製

cur.next = listnode(s % 10)

cur = cur.next

if l1:

l1 = l1.next

if l2:

l2 = l2.next

if carry > 0: #最後仍有進製,則加上乙個進製節點

cur.next = listnode(carry)

return pre.next

2 兩數相加

平均星級 4.45 239次評分 2018年2月2日 28.6k次 預覽 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807演算法 我們首先從最低有效位也就是列表 l1和...