输入的整数数组有四个整数,分别为2,7,11,15,目标值为9。数组中的2和7的累加和为9,因此返回这两个整数在数组中的下标地址,即0,1。测试数据文件名为in.txt。
时间: 2024-09-28 21:14:03 浏览: 32
这个问题描述的是在一个整数数组中寻找两个元素之和等于给定目标值的情况。我们需要找到数组中满足条件的那对数字的下标。在这个例子中,数组 `arr` = [2, 7, 11, 15] 中,2 + 7 的和正好等于 9,所以返回它们的下标 0 和 1。
以下是一个简单的 C++ 解决方案:
```cpp
#include <iostream>
#include <vector>
std::pair<int, int> findTwoSum(const std::vector<int>& arr, int target) {
for (int i = 0; i < arr.size() - 1; ++i) { // 避免重复元素,不考虑 i == j
int complement = target - arr[i];
if (std::binary_search(arr.begin() + i + 1, arr.end(), complement)) {
return {i, i + 1 + std::distance(arr.begin(), std::find(arr.begin() + i + 1, arr.end(), complement))};
}
}
throw std::runtime_error("No pair found with sum " + std::to_string(target)); // 如果没有找到,抛异常
}
int main() {
std::vector<int> arr = {2, 7, 11, 15};
int target = 9;
try {
auto result = findTwoSum(arr, target);
std::cout << "The indices of the two numbers are: " << result.first << ", " << result.second << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
这个程序首先遍历数组,对于每个元素,检查从其下一个位置开始是否存在一个元素与其相加等于目标值。这里使用了 `std::binary_search` 函数来查找目标补数(target - arr[i])是否存在于数组中。如果找到了,就返回这对数字的下标;如果没有找到,程序将抛出异常。
阅读全文