給出兩個非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
法1
# definition for singly-linked list.
class
listnode
:def
__init__
(self, x)
: self.val = x
self.
next
=none
class
solution
:def
addtwonumbers
(self, l1: listnode, l2: listnode)
-> listnode:
prenode = listnode(0)
#prenode指向值為0的結點,
lastnode = prenode#定義l結點指向初始值
val =
0while val or l1 or l2:
val, cur =
divmod
(val +
(l1.val if l1 else0)
+(l2.val if l2 else0)
,10) lastnode.
next
= listnode(cur)
#l的下乙個指向兩數相加的個位數的值
lastnode = lastnode.
next
l1 = l1.
next
if l1 else
none
l2 = l2.
next
if l2 else
none
return prenode.
next
#返回初試結點的下乙個結點
# def generatelist(l: list) -> listnode:
# prenode = listnode(0)
# lastnode = prenode
# for val in l:
# lastnode.next = listnode(val)
# lastnode = lastnode.next
# return prenode.next
defprintlist
(l: listnode)
:while l:
print
("%d, "
%(l.val)
, end ='')
l = l.
next
print(''
)if __name__ ==
"__main__"
: l1 = generatelist([1
,5,8
])l2 = generatelist([9
,1,2
,9])
printlist(l1)
printlist(l2)
s = solution(
)sum
= s.addtwonumbers(l1, l2)
printlist(
sum)
法2,定義結點類看的不太懂!!
# definition for singly-linked list.
class
listnode()
:def
__init__
(self, val):if
isinstance
(val,
int)
: self.val = val
self.
next
=none
elif
isinstance
(val,
list):
self.val = val[0]
self.
next
=none
cur = self
for i in val[1:
]:cur.
next
= listnode(i)
cur = cur.
next
defgatherattrs
(self)
:return
", "
.join(
"{}: {}"
.format
(k,getattr
(self, k)
)for k in self.__dict__.keys())
def__str__
(self)
:return self.__class__.__name__+
" ".
format
(self.gatherattrs())
+"}"
class
solution
:def
addtwonumbers
(self, l1: listnode, l2: listnode)
-> listnode:
ifisinstance
(l1,
list):
l1 = listnode(l1)
l2 = listnode(l2)
re = listnode(0)
r=re
carry=
0while
(l1 or l2)
: x= l1.val if l1 else
0 y= l2.val if l2 else
0 s=carry+x+y
carry=s//
10 r.
next
=listnode(s%10)
r=r.
next
if(l1!=
none
):l1=l1.
next
if(l2!=
none
):l2=l2.
next
if(carry>0)
: r.
next
=listnode(1)
return re.
next
# @lc code=end
if __name__ ==
"__main__"
: test = solution(
)print
(test.addtwonumbers([1
,3],
[2,1
,3])
)
leetcode熱門100題01兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
leetcode熱門100題02兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
LeetCode熱題 HOT 100兩數之和
開篇今天興趣來潮打算去leetcode刷刷演算法題,為面試準備,忽然看到頁面的leetcode 熱題 hot 100,然後就點進去了,然後就有了這個文章!兩數之和 給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。你可...