题目介绍
在一个整数数组中,找出两个数之和等于给定目标值。假设每个输入只有一个解,并且同一个元素不能使用两次。
题目解析
给定一个整数数组 nums
和一个目标值 target
,要求返回数组中满足两数之和等于目标值的两个数的索引。
解题思路
一种简单的解法是使用两层循环遍历数组中的每对元素,判断它们的和是否等于目标值。这种解法的时间复杂度为 O(n²)。
更高效的解法是利用哈希表。我们可以遍历一次数组,将每个元素与其索引存储在哈希表中。然后再遍历一次数组,对于每个元素,计算目标值与当前元素的差值,并检查这个差值是否在哈希表中。如果存在,则找到了两个数的索引。这种解法的时间复杂度为 O(n)。
代码实现
def twoSum(nums, target):
hashmap = {
}
for i, num in enumerate(nums):
complement = target - num
if complement in hashmap:
return [hashmap[complement], i]
hashmap[num] = i
解题技巧
- 使用哈希表可以将寻找目标值的时间复杂度从 O(n) 降低到 O(1)。
总结
本文介绍了在一个整数数组中寻找两个数之和等于给定目标值的方法。通过使用哈希表,我们可以以更高效的方式解决这个问题。当然,在解题时需注意题目中的约束条件,例如每个输入只有一个解,同一个元素不能使用两次等。