LeetCode菜鳥從零開始 第二題 兩數相加

2021-10-01 14:10:47 字數 1401 閱讀 2951

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

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

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

class

solution

:def

addtwonumbers

(self, l1: listnode, l2: listnode)

-> listnode:

a = l1

b = l2

p = listnode(0)

q = p

flag =

0while a or b or flag:

#一定不要忘了flag,否則5+5=0

val =

(a.val if a else0)

+(b.val if b else0)

+ flag

val,flag = val %10,

1if val >=

10else

0 q.val = val

if(a.next

if a else a)

or(b.

next

if b else b)

or flag:

#同上 q.

next

= listnode(0)

q = q.

next

if a:

a = a.

next

if b:

b = b.

next

return p

藉著這道題可以同時回憶了一下大學期間c語言的鍊錶知識

兩個鍊錶相加,我們用乙個新的鍊錶來儲存相加的和,於是新建乙個鍊錶,p指向煉表頭,q是用來移動到下一節點的指標。

這是一道加法題,那就要考慮進製,也就是flag的作用。

以乙個兩位數和乙個三位數相加為例,結果可能是三位數也可能是四位數,計算過程是這樣的:

1.個位數字相加

2.十位數字相加,並與進製相加(也可能沒有)

3.三位數的百位數字與進製相加(也可能沒有)

4.如果有進製那千位為1

也就得到了我們的while迴圈的迴圈條件a不為空或b不為空或flag不為0,滿足條件的都要繼續加下去。

下面介紹乙個python中的小語法

a if condition else b。當滿足條件condition時,執行a,否則,執行b。

Django 從零開始

方法1 pip install django 1.6.5 測試是否安裝成功 python import django 1,6,5,final 0 django 使用了 python 標準的 distutils 安裝法,在 linux 平台可能包括如下步驟 tar xzvf django tar.gz...

HTML從零開始

一 標籤 1.使用小寫 2.開始標籤常被稱為開放標籤 opening tag 結束標籤常稱為閉合標籤 closing tag 有效 示例 i reallystrong mean thatem 無效 示例 invalid i reallyem mean thatstrong 二 屬性 1.開始標籤包含...

vim 從零開始

相信大家一開始接觸linux時肯定不知道為什麼要用vim這個奇怪的東西,有各種奇怪的模式,還不如直接用gedit,簡單快捷。有關這個問題大家可以去看知乎大神,今天我在這裡只想記錄一下自己使用vim的過程。雖然vim很強大,但是如果沒用配置最初的狀態是很醜也不怎麼好用的。在配置的過程中,我參考了一下幾...