給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
有兩個思路,乙個是把鍊錶乙個個存下來直接相加。這個比較簡單,容易實現,主要就是考類的宣告
class solution:
def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:
num1 = str(l1.val)
while l1.next:
l1 = l1.next
num1 += str(l1.val)
num1 = int(num1[::-1])
num2 = str(l2.val)
while l2.next:
l2 = l2.next
num2 += str(l2.val)
num2 = int(num2[::-1])
num = str(num1 + num2)
l = len(num)
result = listnode(int(num[0]))
for i in range(1, l):
result = listnode(int(num[i]), result)
return result
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
class solution:
def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:
count = 0
def addtwo(list1, list2, count):
if not list1 and not list2 and not count:
return none
else:
val = (list1.val if list1 else 0) + (list2.val if list2 else 0) + count
node = listnode(val % 10)
node.next = addtwo(list1.next if list1 else none,
list2.next if list2 else none, val // 10)
return node
return addtwo(l1, l2, count)
這乙個就是很好的利用了三元運算子,值得學習 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和...