使用c++,输入一个整形数组(不含重复数字),然后输入一个任意数字N.如果数组里存在两个整数和为N的数,则返回这两个整数的下标[X,Y](X为第一个整数下标,Y为第二个整数下标)不存在则返回[-1,-1]。
时间: 2024-09-29 08:03:50 浏览: 30
C++两个一维数组相加求和
在C++中,你可以使用哈希表或者双指针技术来解决这个问题。这里是一个简单的示例代码:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
pair<int, int> findTwoSum(vector<int>& nums, int target) {
unordered_map<int, int> map;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (map.find(complement) != map.end()) {
return {map[complement], i};
}
map[nums[i]] = i;
}
return {-1, -1};
}
int main() {
vector<int> nums = {2, 7, 11, 15}; // 示例数组
int N = 9; // 目标和
pair<int, int> result = findTwoSum(nums, N);
if (result.first == -1 && result.second == -1) {
cout << "没有找到和为" << N << "的两个数." << endl;
} else {
cout << "和为" << N << "的两个数的下标为:" << result.first << ", " << result.second << endl;
}
return 0;
}
```
这个程序首先遍历数组,对于每个元素,它会检查目标值减去当前元素是否在哈希表中。如果存在,说明找到了一对和为目标值的数,返回它们的索引;如果没有,就将当前元素及其索引添加到哈希表中继续搜索。如果没有找到满足条件的数对,最后返回{-1, -1}。
阅读全文