鍊錶之超直白的兩數相加

2021-10-06 21:54:09 字數 1400 閱讀 9705

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

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

您可以假設除了數字 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 ...