給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
我的解法
class
solution
:def
twosum
(self, nums: list[
int]
, target:
int)
-> list[
int]
: n =
len(nums)
targetl =
[target]
* n temp =
[targetl[i]
- nums[i]
for i in
range
(n)]
temp1 =-1
for i in
range
(n):
if temp[i]
in nums[i:]:
if(temp[i]
==nums[i])&
(temp.count(temp[i])==
1):continue
else
: temp1 = nums.index(temp[i]
,i+1
)break
if temp1>0:
return
[i,temp1]
執行用時
824 ms
#執行通過,耗時縮短一半多,共 652ms。
def
twosum
(nums, target)
: lens =
len(nums)
j=-1
for i in
range(1
,lens)
: temp = nums[
:i]if
(target - nums[i]
)in temp:
j = temp.index(target - nums[i]
)break
if j>=0:
return
[j,i]
通過字典的方法,查詢效率快很多,執行速度大幅縮短,共 88ms。
def
twosum
(nums,target)
: hashmap=
for ind,num in
enumerate
(nums)
: hashmap[num]
= ind
for i,num in enuamerate(nums)
: j = hashmap.get(target-nums)
if j is
notnone
and i!=j:
return
[i,j]
網路流演算法 例題整理
dinic 無當前弧優化 void add int x,int y,int z int dfs int x,int sum return0 int bfs if dep t 0 return 1 else return0 int dinic return ans dinic 含當前弧優化 多了乙個c...
Dijkstra演算法 例題
dijkstra演算法 從起點到終點求最短路 使用要求權值為正 1 求短路i 題目 點數 500 邊數 1e5 include include include using namespace std const int n 510,m 1e5 10 時間複雜度o n m int n,m 鄰接矩陣 i...
模擬演算法例題
一 火柴棒 題目描述 給你n根火柴棍,你可以拼出多少個形如 a b c 的等式?等式中的a b c是用火柴棍拼出的整數 若該數非零,則最高位不能是0 用火柴棍拼數字0 9的拼法如圖所示 注意 1 加號與等號各自需要兩根火柴棍 2 如果a b,則a b c與b a c視為不同的等式 a b c 0 3...