Leetcode 二 兩數相加

2021-10-08 03:06:33 字數 1382 閱讀 4994

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

求,將兩個數相加起來,返回乙個新的鍊錶來表示它們的和。

注,假設除了數字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!演算法很難,刷題的過程也很痛苦,但是只要我們能堅持下去,以後的收穫將會是巨大的。希望我們都能夠堅持下去,人人都能成為大神。題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照...