題目:
給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。
你可以假設除了數字 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和...