题目描述
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
代码示例
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
"""
寻找数组中两个数的和等于目标值的索引
Parameters:
- nums: 给定的整数数组
- target: 目标值
Returns:
- List[int]: 包含两个数的索引列表,如果不存在则返回[-1, -1]
"""
record = dict() # 用字典记录数字及其索引
for i, num in enumerate(nums):
complement = target - num
if complement in record:
return [record[complement], i] # 返回满足条件的索引
else:
record[num] = i # 记录当前数字及其索引
return [-1, -1] # 未找到满足条件的索引,返回[-1, -1]
看到这个问题时,考虑采用两个循环的暴力解法,逐一检查每一对数字是否等于目标值。
然而,在阅读完代码随想录之后,我发现了更为高效的解决方案。通过利用哈希表,我可以将遍历过的数值存储在表中,以便在每次遍历时直接查找是否存在与当前元素匹配的目标值。这种方法的时间复杂度较低,能够更迅速地找到满足条件的索引。哈希表的运用使得算法更为优雅和高效。