演算法例題整理02 陣列leecode1

2021-10-04 05:25:11 字數 1660 閱讀 6676

給定乙個整數陣列 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...