Leetcode之兩數之和

2021-09-29 07:43:42 字數 2105 閱讀 8005

題目:

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

方法一:利用list遍歷迴圈

def getsumindex(list, target):

for num1 in list:

num2 = target - num1

if num2 in list:

index1 = list.index(num1)

index2 = list.index(num2)

return [index1, index2]

return [none, none]

方法二:利用list遍歷迴圈,在方法一基礎上改進

def getsumindex2(nums, target):

for num1 in nums:

num2 = target - num1

index1 = nums.index(num1)

temp = nums[:index1]

if num2 in temp:

index2 = temp.index(num2)

return [index2, index1]

return [none, none]

方法三:利用list和dict遍歷和詞典匹配

import collections

def getsumindexbydict(nums, target):

# dictdata = collections.ordereddict() #有序詞典

dictdata = {}

for index, num in enumerate(nums):

dictdata[num] = index

for index, num in enumerate(nums):

num2 = target -num

index2 = dictdata.get(num2)

if index2 is not none and index2 != index:

print(num, num2)

return [index, index2]

return [none, none]

測試**:

import time

if __name__ == '__main__':

nums = [2, 7, 11, 15, 8, 10]

target = 13

time1 = time.clock()

result1 = getsumindex(nums, target)

time2 = time.clock()

result2 = getsumindex2(nums, target)

time3 = time.clock()

result3 = getsumindexbydict(nums,target)

time4 = time.clock()

print('result1:', result1, 'time:' , (time2-time1))

print('result2:', result2, 'time:', (time3 - time2))

print('result3:', result3, 'time:', (time4 - time3))

#測試結果如下:

result1: [0, 2] time: 2.719999999999806e-05

result2: [0, 2] time: 1.3699999999998436e-05

result3: [0, 2] time: 1.4300000000001811e-05

LeetCode之兩數之和

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

LeetCode之兩數之和

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

leetcode之兩數之和

廢棄很久的部落格,終於從灰塵中撿起來了。摸魚近一年,最終研果真沒希望考上了。還是老老實實挨社會的毒打吧。leetcode刷題好平台,先用它來熟悉很久未上手的演算法吧 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設...