输入一个整形数组(不含重复数字),然后输入一个任意数字n。如果数组里存在两个整数和为n的数,则返回这两个整数的下标[x,y](X为第一个整数下标,Y为第二个整数下标)不存在则返回[-1,-1]。
时间: 2024-10-07 16:08:22 浏览: 34
这是一个常见的编程问题,通常涉及到哈希表或者双指针算法。可以按照以下步骤解决:
1. 首先,遍历整个数组,对于每个元素i,检查哈希表(如Python字典或Java HashMap)中是否存在键值对`(n - i)`,如果存在,说明找到了和为n的一对数,直接返回[i, key],其中key是你之前存储的值,即对应于`n - i`的下标。
2. 如果当前元素i对应的`(n - i)`不存在,就将i作为键,其索引i作为值存入哈希表。
3. 如果遍历完整个数组都没有找到符合条件的数对,那么返回[-1, -1],表示没有找到和为n的整数组合。
以下是Python的一个示例代码片段:
```python
def two_sum(nums, target):
hash_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hash_map:
return [hash_map[complement], i]
hash_map[num] = i
return [-1, -1]
# 示例
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
print(result) # 输出:[0, 1]
```
阅读全文