:#資料結構:鍊錶(類似於火車,一節一節連線起來的結構。可實現查詢,新增,插入,刪除元素)
def__init__
(self, x)
:#初始化有兩個.val表示資料,.next表示下乙個資料
self.val = x
self.
next
=none
class
solution()
:def
addtwonumbers
(self, l1, l2)
:if l1 is
none
:return l2
if l2 is
none
:return l1
dummy=listnode(0)
#車頭 p=dummy
carry=
0while l1 or l2:
tmpsum=
0if l1:
tmpsum=l1.val
l1=l1.
next
if l2:
tmpsum=tmpsum+l2.val
l2=l2.
next
p.next
=listnode(
(tmpsum+carry)%10
) carry=
(tmpsum+carry)
//10
p=p.
next
if carry==1:
p.next
=listnode(1)
return dummy.
next
#從車廂開始返回
if __name__ ==
'__main__'
:#除錯時使用
# 建立物件solution
sol = solution(
)# 定義l1鍊錶
l1 = listnode(2)
l1.next
= l11 = listnode(4)
l11.
next
= l12 = listnode(5)
# 定義l2鍊錶
l2 = listnode(5)
l2.next
= l21 = listnode(6)
l21.
next
= l22 = listnode(4)
# 獲取返回值的鍊錶
res = sol.addtwonumbers(l1, l2)
# 迴圈遍歷出來
while res:
(res.val)
res = res.
next
class
listnode()
:def
__init__
(self, x)
: self.val = x
self.
next
=none
class
solution()
:def
addtwonumebers
(self, l1, l2)
: dummy = listnode(0)
p = dummy
carry =
0while l1 and l2:
p.next
= listnode(
(l1.val + l2.val + carry)%10
) carry =
(l1.val + l2.val + carry)
//10
l1 = l1.
next
l2 = l2.
next
p = p.
next
''' p.next和carry計算完之後
l1需指向下一節車廂
l2也指向下一節車廂
存放和的火車p也需指向下一節車廂
'''while l1:
p.next
= listnode(
(l1.val + carry)%10
) carry =
(l1.val + carry)
//10
l1 = l1.
next
p = p.
next
while l2:
p.next
= listnode(
(l2.val + carry)%10
) carry =
(l2.val + carry)
//10
l2 = l2.
next
p = p.
next
if carry !=0:
p.next
= listnode(1)
return dummy.
next
if __name__ ==
"__main__"
: l1 = listnode(2)
l1.next
= listnode(4)
l1.next
.next
= listnode(5)
l2 = listnode(5)
l2.next
= listnode(6)
# l2.next.next=listnode(4)
sol = solution(
) res = sol.addtwonumebers(l1, l2)
# 返回鍊錶需要使用while迴圈,一次返回乙個數值
while res:
print
(res.val)
res = res.
next
LeetCode2 兩數相加
嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...
LeetCode 2 兩數相加
題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...
LeetCode 2 兩數相加
題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...