解題思路 leetcode第二題 兩數相加

2021-10-02 06:28:34 字數 1852 閱讀 3206

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

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

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

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

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

解題過程:

第一次解,使用鍊錶元素迴圈相加的方法,每加一次鍊錶向後移一位,並用sum鍊錶儲存當前迴圈得到的值,並傳給head鍊錶儲存所有相加得到的值。type儲存進製標誌,當兩個元素相加大於等於10時,type等於1,這樣,下次迴圈時得到的值便是加上進製1後的值。**如下:

class

solution

:def

addtwonumbers

(self, l1: listnode, l2: listnode)

-> listnode:

sum= listnode(0)

head =

sumtype=0

while l1!=

none

or l2!=

none

ortype!=0

: a = l1.val + l2.val +

type

if a >=10:

a = a %

10type=1

else

:type=0

sum.

next

= listnode(a)

l1 = l1.

next

l2 = l2.

next

sum=

sum.

next

return head.

next

提交後,未通過,檢視原因得知迴圈過程中當鍊錶為空時,無法呼叫.val方法。這才想起自己沒有加處理空鍊錶的步驟,所以加上了處理空鍊錶的過程,在迴圈過程中,當鍊表為空時,給鍊錶加乙個值為0的元素,從而可以呼叫.val方法。**如下:

class

solution

:def

addtwonumbers

(self, l1: listnode, l2: listnode)

-> listnode:

sum= listnode(0)

head =

sumtype=0

while l1!=

none

or l2!=

none

ortype!=0

:if l1 ==

none

: l1 = listnode(0)

if l2 ==

none

: l2 = listnode(0)

a = l1.val + l2.val +

type

if a >=10:

a = a %

10type=1

else

:type=0

sum.

next

= listnode(a)

l1 = l1.

next

l2 = l2.

next

sum=

sum.

next

return head.

next

提交後,通過

1563 / 1563 個通過測試用例

狀態:通過

執行用時:68 ms

MS第二題解題思路

周二進行了ms的面試,一面的第二題沒有做出來,當時和面試官說了,回來好好想想,然後把思路貼在部落格上,雖然面試官高可能也不會來看。但是還是自己總結一下吧!題目和leetcode85一樣,有兩種思路。第一種思路 也就是走之前面試官提示的思路。基於largest rectangle in histogr...

Leetcode解題思路

所有簡單題的解題思路。question count the number of prime numbers less than a non negative number,n example input 10output 4explanation there are 4 prime numbers ...

leetcode解題思路分析(七)43 49題

字串相乘 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。class solution 去除首位 0 for int i 0 i n1 n2 i return 0 萬用字元匹配 給定乙個字串 s 和乙個字元模式 實現乙個支援...