leetcode刷題總結 Python 數學

2021-10-02 20:43:53 字數 1188 閱讀 2104

本文收錄了leetcode熱題中的一些數學類題目

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

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

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

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

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

def

addtwonumbers

(self, l1, l2)

:# 定義乙個進製標誌

a,b,p,carry = l1,l2,

none,0

while a or b:

# a和b節點的值相加,如果有進製還要加上進製的值

val =

(a.val if a else0)

+(b.val if b else0)

+carry

# 根據val判斷是否有進製,不管有沒有進製,val都應該小於10

carry, val = val//

10, val%

10 p,p.val = a if a else b,val

# a和b指標都前進一位

a,b = a.

next

if a else

none

,b.next

if b else

none

# 根據a和b是否為空,p指標也前進一位

p.next

= a if a else b

# 迴圈結束carry>0說明有進製

if carry:

p.next

= listnode(1)

# 每次迭代實際上都是將val賦給a指標的,所以最後返回的是l1

return l1

思路:定義a,b指標分別指向l1,l2,用來遍歷鍊錶;定義p指標用來修改節點值(在l1的基礎上修改);定義變數carry計算進製,每次迴圈先計算修正後的節點值和進製,再使指標前進,兩個鍊錶均遍歷完畢則迴圈結束

時間複雜度:o(n),n=max(n1,n2),n1,n2分別為兩條鍊錶的長度

空間複雜度:o(1),直接在原煉表上修改,最多申請了最後一位進製的空間

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...

leetcode刷題總結 6 10題

六 zigzag conversion 本題屬於比較簡單的,很容易就能總結出規律。乙個zigzag數以2 numrows 2為乙個迴圈,每乙個豎行的字母下標為乙個cycle,除了第一行和最後一行,中間各行都要加乙個j cycle 2 i i為從零開始的行號,j為每個迴圈裡i cycle n.clas...