LeetCode 两数之和题解

📅 2026/7/3 8:52:38 👁️ 阅读次数 📝 编程学习
LeetCode 两数之和题解

LeetCode 两数之和题解

题目描述

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

示例

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

解题思路

方法:哈希表

思路

  • 使用哈希表来解决这个问题。
  • 遍历数组,对于每个元素,计算目标值减去当前元素的值(补数)。
  • 如果补数在哈希表中,返回补数的索引和当前元素的索引。
  • 如果补数不在哈希表中,将当前元素和其索引存入哈希表。

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。每个元素最多被访问一次。
  • 空间复杂度:O(n),需要额外的空间来存储哈希表。

代码实现

方法:哈希表

# 两数之和(哈希表) def two_sum(nums, target): hash_map = {} for i, num in enumerate(nums): complement = target - num if complement in hash_map: return [hash_map[complement], i] hash_map[num] = i return [] # 测试 def test_two_sum(): nums = [2, 7, 11, 15] target = 9 print(two_sum(nums, target)) # 输出:[0, 1] nums = [3, 2, 4] target = 6 print(two_sum(nums, target)) # 输出:[1, 2] if __name__ == "__main__": test_two_sum()

测试用例

测试用例 1:基本情况

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

测试用例 2:不相邻元素

输入:nums = [3,2,4],target = 6
输出:[1,2]

总结

两数之和是一个经典的哈希表问题,它可以通过哈希表来高效地解决。

哈希表法的核心思想是:遍历数组,对于每个元素,计算目标值减去当前元素的值,如果补数在哈希表中,返回结果;否则将当前元素存入哈希表。

掌握哈希表的使用方法,对于解决类似的问题非常重要。