你可以使用一个哈希表来解决这个问题,以便在一次遍历中找到两个数的索引。以下是一个示例函数 `two_sum`,它接受一个整数数组 `nums` 和一个整数目标值 `target`,并返回两个数的索引。
```python
def two_sum(nums, target):
# 创建一个空的哈希表来存储数值和对应的索引
num_to_index = {}
# 遍历数组
for index, num in enumerate(nums):
# 计算当前数值所需的补数
complement = target - num
# 检查补数是否在哈希表中
if complement in num_to_index:
# 如果补数存在,返回补数的索引和当前数值的索引
return [num_to_index[complement], index]
# 如果补数不存在,将当前数值和索引添加到哈希表中
num_to_index[num] = index
# 如果没有找到任何结果,返回一个空列表(根据题意应不会发生)
return []
# 测试函数
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
print(result) # 输出: [0, 1]
```
在这个例子中,函数返回 `[0, 1]`,因为在数组 `nums` 中,`nums[0] + nums[1]` 等于目标值 `9`。注意,哈希表的查找和插入操作的时间复杂度为 O(1),因此整个算法的时间复杂度为 O(n),其中 n 是数组的长度。