Two Sum 是一个经典的编程问题,它要求你找出数组中两个数,使得它们的和等于目标值。这是一个很好的练习数组遍历和哈希表使用的例子。

问题描述

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解决方案

这里有一个使用哈希表的解决方案,时间复杂度为 O(n)。

  1. 创建一个空哈希表 hashMap
  2. 遍历数组 nums,对于每个元素 num
    • 计算差值 diff = target - num
    • 如果 diffhashMap 中,返回 [diff 的索引, 当前 num 的索引]
    • num 和它的索引存储在 hashMap 中。

代码示例:

def twoSum(nums, target):
    hashMap = {}
    for i, num in enumerate(nums):
        diff = target - num
        if diff in hashMap:
            return [hashMap[diff], i]
        hashMap[num] = i

扩展阅读

如果你对 Two Sum 问题感兴趣,可以进一步阅读以下内容:

希望这个解答能帮助你更好地理解 Two Sum 问题!

Two_Sum