給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class
solution
:"""
dict_sum: 儲存的是列表的值和對應的索引組成的鍵值對,key: 列表的值
從左至右遍歷列表,檢查target-nums[i]的值在字典dict_sum是否存在
如果存在,返回[dict_num.get(target - nums[i]), i]
如果不存在,將列表的值和對應的索引作為一對鍵值對存入字典
"""deftwosum
(self, nums: list[
int]
, target:
int)
-> list[
int]
: dict_num =
for i, m in
enumerate
(nums)
:if dict_num.get(target - m)
isnot
none
:return
[dict_num.get(target - m)
, i]
dict_num[m]
= i
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
# 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:
head = listnode(0)
p = head
add =
0# 兩數相加後的進製
while l1 and l2:
p.next
= listnode(
(l1.val + l2.val + add)%10
)# 兩個數相加的個位數儲存在新結點中
add =
(l1.val + l2.val + add)
//10
p, l1, l2 = p.
next
, l1.
next
, l2.
next
# 退出while迴圈時,可能是l1的鍊錶先結束,可能是l2的鍊錶先結束,也可能兩個一起結束
# 把剩下的數都連線到l1後面
if l1:
# l2的鍊錶先行結束
pass
else
:# l2的鍊錶先行結束
l1 = l2
while l1:
p.next
= listnode(
(l1.val + add)%10
) add =
(l1.val + add)
//10
p, l1 = p.
next
, l1.
next
# 鍊錶都計算結束後若還有進製
if add !=0:
p.next
= listnode(add)
return head.
next
力扣LeetCode刷題日記(二)
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
力扣刷題日記(3)
最近有點懶,哈哈,刷題挺慢的,今天用python3 練練手了,題目如下 設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,...
力扣刷題日記(5)
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...