📜  门|门 IT 2007 |问题 13(1)

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

门|门 IT 2007 |问题 13

欢迎来到门|门 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’的全部介绍,希望这能够帮助你顺利完成这道编程题目。