📜  门|门 IT 2005 |问题 11(1)

📅  最后修改于: 2023-12-03 15:28:48.099000             🧑  作者: Mango

门门 IT 2005 | 问题 11

简介

这是一道来自门门 IT 2005年的编程题目,目的是检验程序员的逻辑思维和编码能力。题目描述如下:

给定一个整数数组 nums ,找到其中两个数满足它们的和等于一个给定的目标值 target ,请你返回这两个数的索引。

你可以假设每个输入都只对应唯一的答案,而且你不可以重复使用相同的元素。

思路

通过遍历给定的数组,对于每一个元素,判断 target 减去该元素是否在数组中。如果存在,则返回该元素的索引和差值的索引,否则继续遍历。

为了快速查找 target 减去该元素是否在数组中,可以使用字典数据结构完成。

代码实现
def two_sum(nums, target):
    dic = {}
    for i, num in enumerate(nums):
        if target - num in dic:
            return [dic[target - num], i]
        dic[num] = i
    return []
测试用例

为了验证代码的正确性,可以使用以下测试用例:

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]
总结

这道题目需要用到字典数据结构,以及简单的遍历和判断操作,是一道非常典型的算法题。掌握这种解题思路对于编程能力的提高有很大帮助。