題目描述

describtion.png
思路:返回位置題中用python可以有兩種方法,一種是位置遍歷,返回i;另一種是用數(shù)組方法index。用后一種方法,要返回兩個(gè)坐標(biāo)時(shí)必須分開(kāi)求,不然數(shù)字相同index只返回先出現(xiàn)的位置。先遍歷, 在target減去i,在余下數(shù)組中求出另外一值
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in nums:
j = target - i
start_index = nums.index(i) + 1
temp_nums = nums[start_index:]
if j in temp_nums:
return nums.index(i),start_index+temp_nums.index(j)
注意:這里的nums.index()如果兩元素相同,則默認(rèn)返回第一個(gè)。
優(yōu)化:用hashmap。將數(shù)值和其在數(shù)組里的位置分別作為dict的key和value,比索引快。
dict = {}
for i in range(len(nums)):
if target-nums[i] not in dict:
dict[nums[i]] = i
else:
return [dict[target-nums[i]],i]