📅  最后修改于: 2023-12-03 15:28:48.099000             🧑  作者: Mango
这是一道来自门门 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]
这道题目需要用到字典数据结构,以及简单的遍历和判断操作,是一道非常典型的算法题。掌握这种解题思路对于编程能力的提高有很大帮助。