输入一个整形数组 (不含重复数字),然后输入一个任意数字N。如果数组里存在两个整数和为N的数,则返回这两个整数的下标[X, Y] (X为第一个整数下标, Y为第二个整数下标) 不存在则返回[[-1,-1]。
时间: 2024-10-08 21:23:40 浏览: 19
将一个整数S随机拆分为N个在min~max之间的整数.txt
这个问题描述的是寻找数组中特定和值对的索引情况,通常被称为“查找两个数之和”(Two Sum)。给定一个无序整数数组和一个目标值N,你需要找出是否存在两个数组元素,它们相加等于给定的目标值,并返回这两个元素的下标。
解决这个问题的一个常见方法是使用哈希表(Hash Table),也叫散列表。遍历数组的过程中,对于每个元素,检查哈希表(存储已知元素和其索引)中是否有一个元素使得它们的和等于目标值N。如果找到,直接返回这两个元素的索引;如果没有找到,将当前元素及其索引添加到哈希表中继续搜索。如果遍历完整个数组都没有找到合适的配对,返回默认的未找到结果[-1, -1]。
以下是这个算法的伪代码:
```
function findTwoSum(nums, target):
hash_table = {}
for i in range(len(nums)):
complement = target - nums[i]
if complement in hash_table:
return [hash_table[complement], i]
hash_table[nums[i]] = i
return [-1, -1]
```
阅读全文