2 兩數相加

2022-01-23 02:59:29 字數 2178 閱讀 1539

倒序的數字進行相加;

數字進行倒序還算是簡單的,因為我們正常的運算也是從按照這個順序,正好可以方便計算;

實現中的兩個方法是一樣的,不太懂為啥下面的執行時間查這麼多;

class

solution(object):

defaddtwonumbers(self, l1, l2):

"""執行用時 : 128 ms, 在add two numbers的python提交中擊敗了7.75% 的使用者

記憶體消耗 : 11 mb, 在add two numbers的python提交中擊敗了0.86% 的使用者

:type l1: listnode

:type l2: listnode

:rtype: listnode

"""dummy = cur = listnode(0)

is_decimal = false

while

l1and

l2:is_decimal, value = self.get_add_result(val1=l1.val, val2=l2.val, is_decimal=is_decimal)

node = listnode(value)

cur.next = node

cur = cur.next

l1 = l1.next

l2 = l2.next

while

l1:is_decimal, value = self.get_add_result(val1=l1.val, is_decimal=is_decimal)

node = listnode(value)

cur.next = node

cur = cur.next

l1 = l1.next

while

l2:is_decimal, value = self.get_add_result(val2=l2.val, is_decimal=is_decimal)

node = listnode(value)

cur.next = node

cur = cur.next

l2 = l2.next

ifis_decimal:

node = listnode(1)

cur.next = node

return

dummy.next

​def

get_add_result(self, val1=0, val2=0, is_decimal=false):

value = val1

+val2

+int(is_decimal)

ifvalue

>= 10:

value %= 10

is_decimal = true

else:

is_decimal = false

return

is_decimal, value

​def

addtwonumbers2(self, l1, l2):

"""執行用時 : 84 ms, 在add two numbers的python提交中擊敗了85.84% 的使用者

記憶體消耗 : 11 mb, 在add two numbers的python提交中擊敗了0.86% 的使用者

:type l1: listnode

:type l2: listnode

:rtype: listnode

"""dummy = cur = listnode(0)

digit = 0

while

l1or

l2or

digit:

ifl1:

digit += l1.val

l1 = l1.next

ifl2:

digit += l2.val

l2 = l2.next

node = listnode(digit

%10)

cur.next = node

cur = cur.next

digit //= 10

return

dummy.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和...