1、題目
給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
`示例 1:`
`輸入:l1 = [2,4,3], l2 = [5,6,4]`
`輸出:[7,0,8]`
`解釋:342 + 465 = 807.`
`示例 2:`
`輸入:l1 = [0], l2 = [0]`
`輸出:[0]`
`示例 3:`
`輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]`
`輸出:[8,9,9,9,0,0,0,1]`
`每個鍊錶中的節點數在範圍 [1, 100] 內`
`0 <= node.val <= 9`
`題目資料保證列表表示的數字不含前導零
2、解法
題目比較簡單,由於鍊錶都已經是逆序排列了,只需要從頭到尾做加法即可。
注:別漏了最後乙個餘數判斷,可能會進1(見quotient判斷函式)
# 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:
val1 = l1.val
val2 = l2.val
quotient =
0 remainder =
(val1 + val2 + quotient)%10
quotient =
(val1 + val2 + quotient)
//10
head = listnode(remainder)
root = head
p = head
while l1.
next
isnot
none
or l2.
next
isnot
none
: val1 = val2 =
0if l1.
next
isnot
none
: l1 = l1.
next
val1 = l1.val
if l2.
next
isnot
none
: l2 = l2.
next
val2 = l2.val
sum1 = val1 + val2 + quotient
remainder = sum1 %
10 quotient = sum1 //
10 newnode = listnode(remainder)
p.next
= newnode
p = p.
next
if quotient !=0:
p.next
= listnode(1)
return root
結果:
顯示詳情
執行用時:64 ms, 在所有 python3 提交中擊敗了90.25%的使用者
記憶體消耗:14.9 mb, 在所有 python3 提交中擊敗了21.61%的使用者
C LeetCode每日一題 2 兩數相加
題目 2.兩數相加 description 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭...
leetcode每日一題 2 兩數相加
題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 ...
每日一題3 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...