leetcode 2 兩數相加python語言

2021-10-21 03:28:02 字數 3075 閱讀 7814

:#資料結構:鍊錶(類似於火車,一節一節連線起來的結構。可實現查詢,新增,插入,刪除元素)

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:

print

(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 的範圍內,我們計算...