提出問題:
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
解題思路:設定兩個指標指向兩條鍊錶,構造新節點儲存兩個當前指標節點的值,當前節點被遍歷過後,指標後移。對於滿10進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:
if l1==none:
return l2
elif l2==none:
return l1
else:
h1 = l1
h2 = l2
flag = 0
new = listnode(0)
res = new
while h1 or h2:
temp = 0
if h1:
temp += h1.val
h1 = h1.next
if h2:
temp += h2.val
h2 = h2.next
if flag == 1:
temp += 1
flag = 0
if temp >= 10:
temp -= 10
flag = 1
res.next = listnode(temp)
res = res.next
if flag == 1:
res.next = listnode(1)
return new.next
時間與空間複雜度:
兩數相加python
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 definition for singly ...
2 兩數相加 python
題目 兩個非空鍊錶表示兩個非負整數,逆序儲存,將兩鍊錶表示的數相加,返回乙個新的逆序鍊錶 法 兩數加法,只是用鍊錶逆序表示,相當於頭節點是個位數字,後面依次是十位 百位數等 注意 1 考慮進製,尤其是最後一次的進製,當兩個鍊錶都遍歷完之後如果還有進製,再在尾部增加乙個節點 2 要記得每次移動指標,避...
兩數之和,兩數相加 leetcode
1.兩數之和,在 leetcode 裡面是屬於 easy 級別的。我們看看他的題目和解法。題目 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。例子 給...