給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。
你可以假設除了數字 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]
思想:設定乙個新鍊錶l3表示鍊錶l1和l2的和,設定tag表示進製的數值,依次將l1和l2中的數值提出(如果存在)與進製值相加,三者和與10的餘數為該位置的數值,三者和與10的整除為進製值,當l1和l2中沒有元素時且進製也為0時停止迴圈輸出l3。
# 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:
l3 = r =
listnode(0
) tag =
0 # 進製
while tag or l1 or l2: # 當tag、l1、l2有乙個不為空時,執行操作
num1 =
0
num2 =
0if l1 is not none:
num1 = l1.val
l1 = l1.next
if l2 is not none:
num2 = l2.val
l2 = l2.next
r.val =
(tag + num1 + num2)%10
tag =
(tag + num1 + num2)
// 10
if tag or l1 or l2:
r.next =
listnode(0
) r = r.next
return l3
LeetCode刷題筆記第26題
題目 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用o 1 額外空間的條件下完成。題目分析 做題之前一定要將題目分析的細緻一些,因為有些條件如果一旦不注意就會造成程式結果出現偏差或者執行不通過...
LeetCode刷題筆記第35題
題目描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。解題思路 最直接的想法就是使用二分查詢,如果有序陣列中含有與target值相等的元素,直接返回對應的索引值 如果沒有則在查詢完畢之後,返回對應...
leetcode刷題筆記 2
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...