可以使用哈希表来解决这个问题。用一个哈希表存储数组中的每个数的值和索引,然后遍历数组中的每个数,检查目标值减去当前数是否在哈希表中。
以下是一种可能的实现:
def two_sum(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 []
在这个实现中,我们定义了一个哈希表 hash_map
,用于存储数组中的数和其索引。然后我们遍历数组中的每个数 num
,计算目标值 target
减去 num
的差值 complement
。如果 complement
在哈希表中,说明存在一个和为目标值的数对,我们返回这两个数的索引;否则我们将当前数 num
存入哈希表中。如果不存在和为目标值的数对,我们返回一个空数组。
例如,对于数组 nums = [2, 7, 11, 15]
和目标值 target = 9
,调用 two_sum(nums, target)
将返回数组 [0, 1]
,因为 nums[0] + nums[1] = 2 + 7 = 9
。