給出兩個非空鍊錶表示兩個非負整數,其中,它們各自的位數是按照逆序的方式儲存的,並且它們的節點只能儲存乙個數字。
求,將兩個數相加起來,返回乙個新的鍊錶來表示它們的和。
注,假設除了數字0之外,這兩個數都不會以0開頭
鍊錶,常見的資料結構,用指標將一連串的資料儲存單元串接起來,每個單元可以劃分為資料域+指標域,資料域用於儲存資料,指標域用於指向其他單元,這樣具有資料域+指標域的單元也叫做節點。
在鍊錶中,第乙個節點稱為頭節點,最後乙個節點稱為尾節點,尾節點處next引用為空,即沒有下乙個節點,每個節點的next都相當於指標,指向另乙個節點,通過對next引用,可以從頭節點向尾節點移動。
優點:在插入刪除時不需要移動其他元素,只需要改變指標;各個節點在記憶體空間中不需要連續;
缺點:陣列元素訪問率低,陣列儲存空間連續,空間利用率低
# definition for singly-linked list. 單鏈表定義
# class listnode:
# def __init__(self, x):
# self.val = x 數值域
# self.next = none 指標域
class
solution
:def
addtwonumbers
(self, l1: listnode, l2: listnode)
-> listnode:
head=listnode(0)
;#頭節點,無儲存
curr=head #初始化鍊錶節點
carry=
0#初始化進一的值
while carry>
0or l1 or l2:
sum=carry
sum+=l1.val if l1 else
0#l1不為空,則取l1.val的值,這樣寫可以節省**空間
sum+=l2.val if l2 else
0
carry=
sum//
10#地板除,求進一,即向下取整
curr.
next
=listnode(
sum%10)
#取餘數,求本節點
curr=curr.
next
#更新指標
if l1:
#求空否,防止出現無後繼節點
l1=l1.
next
if l2:
l2=l2.
next
return head.
next
LeetCode演算法學習二 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
演算法實戰(二)兩數相加
今天開始第二題,有句話寫給自己也寫給大家,rome wasn t built in one day!演算法很難,刷題的過程也很痛苦,但是只要我們能堅持下去,以後的收穫將會是巨大的。希望我們都能夠堅持下去,人人都能成為大神。題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照...
演算法實戰(二)兩數相加
今天開始第二題,有句話寫給自己也寫給大家,rome wasn t built in one day!演算法很難,刷題的過程也很痛苦,但是只要我們能堅持下去,以後的收穫將會是巨大的。希望我們都能夠堅持下去,人人都能成為大神。題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照...