📅  最后修改于: 2023-12-03 15:28:48.488000             🧑  作者: Mango
欢迎来到门|门 IT 2007 |问题 13,这是一个面向程序员的编程题目。
在这道题目中,给定一个大小为n的数字数组,要求你找到其中的两个数,使得它们的和为目标数target,并返回它们的下标。若找不到则返回空。
例如,给定数组[2, 7, 11, 15]和目标数9,应该返回[0, 1],因为2+7=9。
你需要实现一个函数twoSum()
,它接受两个参数,一个数字数组和一个目标数,然后返回一个包含两个数值的数组,表示它们在原数组中的下标。
你可以假设每个输入都有唯一的解决方案,并且你不能使用同一个元素两次。
函数原型如下:
def twoSum(nums: List[int], target: int) -> List[int]:
以下是一个Python3实现的样例代码,可以帮助你快速理解问题的解决方法:
def twoSum(nums, target):
d = {}
for i, num in enumerate(nums):
if target - num in d:
return [d[target - num], i]
d[num] = i
return []
尝试优化上述函数的时间复杂度。你能够做到什么程度呢?
如果你想命令行直接执行这段代码,请右键点击下方的代码片段,选择"运行";或将代码保存至本地,通过Python3解释器执行。
def twoSum(nums, target):
d = {}
for i, num in enumerate(nums):
if target - num in d:
return [d[target - num], i]
d[num] = i
return []
print(twoSum([2, 7, 11, 15], 9))
以上就是‘门|门 IT 2007 |问题 13’的全部介绍,希望这能够帮助你顺利完成这道编程题目。