題目描述:給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 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 和乙個字元模式 實現乙個支援...