📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 39(1)

📅  最后修改于: 2023-12-03 14:50:47.328000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2015 |问题 39

该问题要求开发一款程序,通过输入一个整数数组和目标值,返回数组中两个数的下标,它们的和等于目标值。如果没有这样的两个数,则返回“-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]