python實現兩數之和

2021-10-12 19:39:02 字數 2012 閱讀 9630

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

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

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

因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

寫兩個for迴圈,暴力搜尋。

# -*- coding: utf-8 -*-

'''問題簡述:

給定乙個整數陣列nums和乙個target,請在該陣列中找出和為目標值的兩個數,並且

返回這兩個數的下標。

基本思路:

暴力法:寫兩個for迴圈,暴力求解兩個下標。

'''class

solution()

:'''

input: list,target

output: list[index1,index2]

'''deftwosum

(self,nums,target)

:for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if nums[i]

+ nums[j]

== target:

return

[i,j]

return

none

if __name__ ==

'__main__'

: ilist =[3

,2,4

] target =

6 solu = solution(

) ind = solu.twosum(ilist,target)

print

('返回的下標為:\n'

,ind)

遍歷list中元素,用target-當前元素得到差,看差是否存在於後續子list中。若存在,則返回當前下標i和差的下標。

# -*- coding: utf-8 -*-

'''問題簡述:

給定乙個整數陣列nums和乙個target,請在該陣列中找出和為目標值的兩個數,並且

返回這兩個數的下標。

基本思路:

做差法:若差存在於list中,則說明存在兩個數字的和=target。

'''class

solution()

:'''

input: list,target

output: list[index1,index2]

'''deftwosum

(self,nums,target)

:for i in

range

(len

(nums)):

sub = target-nums[i]

if sub in

(nums[i+1:

]):return

[i,i+

1+nums[i+1:

].index(sub)

]return

none

if __name__ ==

'__main__'

: ilist =[2

,7,11

,15] target =

9 solu = solution(

) ind = solu.twosum(ilist,target)

print

('返回的下標為:\n'

,ind)

a. 在方法二中,返回差的下標值得注意下:i+1 + nums[i+1:].index(sub); 這麼寫原因是因為nums[i+1:]想等於乙個新list,裡面元素下標從0開始。因此需要加上前面i+1得到的才是正確的下標。

python實現兩數之和

題目描述 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2 7,11 15 target 9因為 nums 0 nums 1 2 7 9所以返回 0,1 實現 方法一 暴力求解 class soluti...

python 兩數之和

給定乙個整數陣列 nums和乙個整數目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。def twosum nums,tatget hashmap for ind,num in enumera...

golang 實現兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 golang 實現 package main impor...