2 兩數相加

2021-10-19 09:08:57 字數 1559 閱讀 5508

題目:

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。

請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。

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

示例 1:

輸入:l1 = [2,4,3], l2 = [5,6,4]

輸出:[7,0,8]

解釋:342 + 465 = 807.

示例 2:

輸入:l1 = [0], l2 = [0]

輸出:[0]

示例 3:

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

輸出:[8,9,9,9,0,0,0,1]

每個鍊錶中的節點數在範圍 [1, 100] 內

0 <= node.val <= 9

題目資料保證列表表示的數字不含前導零

解析:首先把兩個非空鍊錶裡面的值存入列表c1,c2裡面。計算c1,c2之和res。建立乙個空鍊錶,從後往前依次把res的值賦值給node節點。

class

solution

(object):

defaddtwonumbers

(self, l1, l2)

:"""

:type l1: listnode

:type l2: listnode

:rtype: listnode

"""c1=

c2=while l1:

#將l1鍊錶存入列表c1

l1=l1.

next

while l2:

#將l2鍊錶存入列表c2

l2=l2.

next

j1=-1

j2=-1

sum1=

0 sum2=

0for i in

range

(len

(c1)):

#計算c1數值

sum1=sum1*

10+c1[j1]

j1=j1-

1for i in

range

(len

(c2)):

#計算c2數值

sum2=sum2*

10+c2[j2]

j2=j2-

1 res=sum1+sum2 #兩數之和

p=head=node=listnode(

none

)#建立空head鍊錶

l=len(

str(res)

)#將int轉為str方便後面迴圈

while l:

node=listnode(res%10)

#從後向前賦值給node節點

p.next

=node

p=node

res/=

10 l-=

1return head.

next

#head一直是頭節點,返回head.next

2 兩數相加

平均星級 4.45 239次評分 2018年2月2日 28.6k次 預覽 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807演算法 我們首先從最低有效位也就是列表 l1和...