力扣第二題 兩數相加 python版本

2021-10-12 13:49:48 字數 2173 閱讀 4601

題目描述

給出兩個非空的鍊錶用來表示兩個非負的整數。

其中,它們各自的位數是按照逆序的方式儲存的,且它們的每個節點只能儲存一位數字。

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

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

示例:

輸入:(7 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:2 -> 1 -> 8

原因:347 + 465 = 812

具體**

class

listnode

(object):

def__init__

(self, val=0,

next

=none):

self.val = val

self.

next

=next

class

solution

(object):

defaddtwonumbers

(self, l1, l2)

:"""

:type l1: listnode

:type l2: listnode

:rtype: listnode

"""# 建立節點值為none的頭節點,r和p指向頭節點,r用來返回答案,p用來遍歷

r = p = listnode(

none

)# s用來表示是否進製,初始化進製為0

s =0while l1 or l2 or s:

# 若l1或l2存在,則將l1的值與l2的值相加,若s為1,則下次加1

s +=

(l1.val if l1 else0)

+(l2.val if l2 else0)

# 將s取餘(個位)作為p的下乙個節點值

p.next

= listnode(s %10)

# s取模

s = s //

10# 向後遍歷

p = p.

next

# 若l1存在,則向後遍歷

l1 = l1.

next

if l1 else

none

l2 = l2.

next

if l2 else

none

# 返回 r 的下乙個節點, 因為 r 指向的是空的頭結點,

# 下乙個節點才是新建鍊錶的後序節點

return r.

next

defmain()

: s = solution(

) nums =

l1 =

list

(map

(int

,input()

.split())

) l2 =

list

(map

(int

,input()

.split())

) head1 = listnode(l1[0]

) head2 = listnode(l2[0]

) p1 = head1

p2 = head2

r1 = head1

r2 = head2

for i in l1[1:

]:p1.

next

= listnode(i)

p1 = p1.

next

for j in l2[1:

]:p2.

next

= listnode(j)

p2 = p2.

next

res = s.addtwonumbers(r1,r2)

while res:

res = res.

next

return nums

if __name__ ==

'__main__'

: result = main(

)print

(result)

力扣第二題兩數相加

題目如下所示 給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 ...

力扣兩數相加

描述 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 definition for singl...

力扣 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...