📅  最后修改于: 2023-12-03 14:50:47.328000             🧑  作者: Mango
该问题要求开发一款程序,通过输入一个整数数组和目标值,返回数组中两个数的下标,它们的和等于目标值。如果没有这样的两个数,则返回“-1”。
本题可以使用哈希表来实现。遍历整个数组,在哈希表中检查当前数字的“补数”是否存在,如果存在,则返回两个数字的下标,否则将当前数字插入哈希表中。插入时,将每个数字与它的下标联系在一起,这样在返回结果时就可以返回两个数字的下标了。
def two_sum(nums, target):
hash_table = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hash_table:
return [hash_table[complement], i]
hash_table[num] = i
return [-1, -1]
assert two_sum([2, 7, 11, 15], 9) == [0, 1]
assert two_sum([3, 2, 4], 6) == [1, 2]
assert two_sum([3, 3], 6) == [0, 1]
assert two_sum([1, 2, 3, 4], 8) == [-1, -1]