給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
1.示例
給定 nums = [2, 7, 11, 15], target = 92. 解析因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
最簡單的方式就是使用暴力破解,遍歷陣列的每乙個元素x,尋找陣列中存在另乙個值等於target-x。
#偽**如下
for i in
range
(len
(l))
:for j in
range
(len
(l)):if
(l[i]
+l[i]
== target):
pass
從**上能夠看出,這段**的時間複雜度為:o(n2)。因此這種方式就存在乙個問題,當陣列過長時,會出現超時的情況。
因此我們選擇使用雜湊表的方式對陣列進行查詢。
雜湊表也叫做雜湊表,他是通過某種演算法將要檢索的項與用來查詢的索引建立聯絡,以加快查詢的速度。簡單來說雜湊表是根據的形式,進行直接訪問的資料結構。python中的字典就是利用雜湊表實現的,因此我們使用字典模擬雜湊儲存過程,提高查詢速度。
先將陣列存為字典形式,然後從字典中查詢元素x,和target-x。**實現如下所示:
class
solution
:def
twosum
(self, nums: list[
int]
, target:
int)
-> list[
int]
: hashmap =
# 字典模擬雜湊
for key,value in
enumerate
(nums)
: hashmap[value]
= key
for i,j in
enumerate
(nums)
: cha = hashmap.get(target - j)
if cha is
notnone
and i != cha:
return i,cha
3. 測試用例
用例編號
測試輸入
實際輸出
test_001
list = [1,2,3,4,5]; target = 3
(0,1)
test_002
list = [-1,-2,-3,-4];target = -3
(0,1)
test_003
list=[-1,0,3,-4,5];target = 2
(0,2)
test_004
list=[1,2,3,4,5];target = 0
none
test_005
list=[-1,-2,-3,-4,-5];target = 0
none
Leetcode 第一題 兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所...
leetcode第一題 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
LeetCode第一題 兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。給定nums 2,7,11,15 target 9 因為nums 0 nums 1 2 7 9 所以返回...