📅  最后修改于: 2023-12-03 15:40:00.442000             🧑  作者: Mango
给定一个整数列表和一个目标数,返回列表中两个数的索引,使它们相加到目标数。
假设每个输入恰好只有一个答案,并且您不能重复使用相同的元素。
您可以按任意顺序返回答案。
示例:
输入: nums = [2,7,11,15], target = 9
输出: [0,1]
解释: nums[0] + nums[1] = 2 + 7 = 9,因此返回 [0, 1]。
我们可以使用哈希表来解决这个问题。
在哈希表中,我们可以将目标数减去每个元素,并在哈希表中查找差值是否存在。如果存在,我们就找到了两个数的索引。
Python 代码:
def twoSum(nums, target):
hash_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hash_map:
return [hash_map[complement], i]
hash_map[num] = i
return []
时间复杂度:O(n),其中 n 是元素数量。
空间复杂度:O(n),其中 n 是元素数量。
在哈希表中查找元素的时间复杂度是 O(1),因此我们可以使用哈希表来解决这种查找的问题。在本题中,我们可以使用哈希表或者双指针来解决,哈希表的时间复杂度为 O(n),而双指针的时间复杂度为 O(nlogn)。因此,在需要查找元素的情况下,哈希表是一种更加高效的解决方案。