📅  最后修改于: 2023-12-03 15:12:38.768000             🧑  作者: Mango
给定一个长度为n的数组和一个目标值,你需要找出数组中和为目标值的两个数,并返回它们的下标。
输入: nums = [2, 7, 11, 15], target = 9
输出: [0, 1]
解释: nums[0] + nums[1] = 2 + 7 = 9,返回它们的下标 0 和 1。
这个问题可以用哈希表来解决。我们可以遍历一遍数组,将每个数在哈希表中对应的下标记录下来,然后再遍历一遍数组,对于每个数,在哈希表中查找是否存在一个数与它相加等于目标值。如果找到了这样的数,就可以直接返回它们的下标。
def twoSum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
hashmap = {}
for i in range(len(nums)):
if nums[i] in hashmap:
return [hashmap[nums[i]], i]
else:
hashmap[target - nums[i]] = i
时间复杂度:O(n)
空间复杂度:O(n)
哈希表是一个非常常用的数据结构,可以帮助我们在O(1)的时间复杂度内查找元素。在解决类似于找到一对数之和等于目标值的问题时,哈希表的应用非常广泛。