用编程完整输入一个整形数组 (不含重复数字),然后输入一个任意数字N。如果数组里存在两个整数和为N的数,则返回这两个整数的下标[X, Y] (X为第一个整数下标, Y为第二个整数下标) 不存在则返回[[-1,-1]。
时间: 2024-10-08 20:24:37 浏览: 18
算法分析与设计论文-可溢出的两个整型数相乘
在编程中,这个问题可以通过哈希表(也称为字典或映射)来解决,因为它提供了一个快速查找元素是否存在的时间复杂度。以下是使用Python的一个示例:
```python
def two_sum(nums, target):
# 创建一个空的哈希表用于存储已经找到的数及其索引
hash_table = {}
# 遍历数组
for i, num in enumerate(nums):
# 如果目标值减去当前数已经在哈希表中,找到了一对和为目标值的数
if target - num in hash_table:
return [hash_table[target - num], i]
# 将当前数和其索引添加到哈希表中
hash_table[num] = i
# 如果遍历结束都没有找到,返回 [-1, -1]
return [-1, -1]
# 测试函数
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
if result != [-1, -1]:
print("两个数的下标是:", result)
else:
print("没有找到满足条件的数对。")
```
在这个例子中,我们首先初始化一个空的`hash_table`,然后检查每个数是否可以与目标值相加。如果找到合适的数,我们就直接返回它们的索引;如果没有找到,就在遍历结束后返回`[-1, -1]`。
阅读全文