📜  门| Gate IT 2005 |问题9(1)

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

门| Gate IT 2005 |问题9

问题描述

给定一个长度为n的数组和一个目标值,你需要找出数组中和为目标值的两个数,并返回它们的下标。

示例

输入: nums = [2, 7, 11, 15], target = 9

输出: [0, 1]

解释: nums[0] + nums[1] = 2 + 7 = 9,返回它们的下标 0 和 1。

解法

这个问题可以用哈希表来解决。我们可以遍历一遍数组,将每个数在哈希表中对应的下标记录下来,然后再遍历一遍数组,对于每个数,在哈希表中查找是否存在一个数与它相加等于目标值。如果找到了这样的数,就可以直接返回它们的下标。

def twoSum(nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """
    hashmap = {}
    for i in range(len(nums)):
        if nums[i] in hashmap:
            return [hashmap[nums[i]], i]
        else:
            hashmap[target - nums[i]] = i

时间复杂度:O(n)

空间复杂度:O(n)

总结

哈希表是一个非常常用的数据结构,可以帮助我们在O(1)的时间复杂度内查找元素。在解决类似于找到一对数之和等于目标值的问题时,哈希表的应用非常广泛。