解决这个问题的一种方法是使用哈希表(Hash Table)来存储已经遍历过的数字及其索引。通过遍历一次数组,将每个数字及其索引添加到哈希表中,然后在遍历过程中,检查目标值与当前数字的差值是否已经在哈希表中存在,如果存在则返回结果。
以下是一个示例代码:
def twoSum(nums, target):
# 创建一个哈希表
num_dict = {}
for i, num in enumerate(nums):
complement = target - num
# 检查差值是否已经在哈希表中存在
if complement in num_dict:
return [num_dict[complement], i]
# 将当前数字及其索引添加到哈希表中
num_dict[num] = i
return []
# 示例用法
nums = [2, 7, 11, 15]
target = 9
result = twoSum(nums, target)
print(result) # 输出 [0, 1]
在这个示例中,我们使用了一个哈希表 num_dict
来存储已经遍历过的数字及其索引。在遍历过程中,我们不断计算当前数字与目标值的差值 complement
,然后检查 complement
是否已经在哈希表中存在。如果存在,则说明我们已经找到了两个数字的和等于目标值的解,直接返回结果。否则,将当前数字及其索引添加到哈希表中,以备后续的检查。