leecode 1 兩數之和

2021-10-07 18:25:25 字數 2049 閱讀 2603

方法一,暴力:

from typing import list

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if nums[i]

+nums[j]

==target:

return

[i,j]

return

方法二:

def

twosum

(nums, target)

: lens =

len(nums)

j=-1

for i in

range

(lens):if

(target - nums[i]

)in nums:

if(nums.count(target - nums[i])==

1)&(target - nums[i]

== nums[i]):

#如果num2=num1,且nums中只出現了一次,說明找到是num1本身。

continue

else

: j = nums.index(target - nums[i]

,i+1

)#index(x,i+1)是從num1後的序列後找num2

break

if j>0:

return

[i,j]

else

:return

方法二,改進:

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:for i in

range

(len

(nums)):

temp = nums[

:i] num1 = target - nums[i]

if num1 in temp:

j = temp.index(num1)

return

[i,j]

方法三,使用雜湊表(耗時最短):

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:"""

:type nums: list[int]

:type target: int

:rtype: list[int]

"""map_a =

dict()

k =len(nums)

for i in

range(0

, k)

:#一邊將列表中的數新增到字典中,一邊判斷兩數之差是否存在於字典中

temp = target - nums[i]

if temp in map_a :

# 判斷步驟

return

[map_a[temp]

, i]

map_a[nums[i]

]= i # 新增步驟(切記先判斷再新增,以免key衝突)

參考

python之雜湊表

菜鳥-python字典

Leecode 1 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素 示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leecode 1 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...

Leecode 1 兩數之和

leetcode 每日一題彙總 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 num...