給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
這道題並不難,不過寫**之前一定先搞清楚這兩種情況
不等長時
等長時
這樣看來不等長的計算包含了等長計算。所以我們預設不等長解決
步驟:比較長度,選擇最長鍊錶a儲存結果過
兩鍊錶相加,直到最短鍊錶b到表尾
將進製c和a剩下的位相加.
**:
class
solution
:def
addtwonumbers
(self, l1: listnode, l2: listnode)
-> listnode:
#c 保留進製
c=0 a=l1
b=l2
#找出最先到尾的鍊錶
while a and b:
a=a.
next
b=b.
next
#用a儲存長鍊表,b儲存短鍊表;a不為空時,說明l1長,存l1;否則l2長,a存l2
if a:
a=l1
b=l2
else
: a=l2
b=l1
#儲存長鍊表表頭
v=a
#相加,直到最短鍊錶到尾
while1:
c,a.val=
divmod
(a.val+b.val+c,10)
b=b.
next
#兩鍊錶相同時,同時到null,但a可能要進製加一增長鍊錶,所以a不能過度到null(例和)
ifnot b:
break
a=a.
next
#當有進製時
while c:
#a的下一位非null,下一位直接加一
if a.
next
: a=a.
next
c,a.val=
divmod
(a.val+c,10)
#當a的下一位為null,增加鍊錶長,值為1,c=0結束
else
: a.
next
=listnode(1)
c=0return v
單向鍊錶之兩數相加
單向鍊錶是什麼?單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以節點來表示的,每個節點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個節點的地 址資料。如以下結構 let nodelist1 以 結...
兩數相加 鍊錶
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
兩煉表數相加
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...