2 兩數相加 2020 11 2

2021-10-10 04:54:04 字數 1487 閱讀 4867

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

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 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和...