给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。给出C++代码
时间: 2023-08-14 09:00:22 浏览: 105
两数之和:在该数组中找出和为目标值的那两个整数,并返回他们的数组下标
以下是一个C++的示例代码,用于在给定的整数数组中找到和为目标值的两个整数,并返回它们的数组下标:
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
std::vector<int> twoSum(std::vector<int>& nums, int target) {
std::unordered_map<int, int> numMap;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (numMap.find(complement) != numMap.end()) {
return {numMap[complement], i};
}
numMap[nums[i]] = i;
}
return {};
}
int main() {
std::vector<int> nums = {2, 7, 11, 15};
int target = 9;
std::vector<int> result = twoSum(nums, target);
if (result.size() == 2) {
std::cout << "Indices: " << result[0] << ", " << result[1] << std::endl;
} else {
std::cout << "No two elements found with the given target sum." << std::endl;
}
return 0;
}
```
在上述示例代码中,我们定义了一个`twoSum`函数,它使用哈希表(unordered_map)来存储数组元素和它们的索引。我们遍历数组,对于每个元素,我们计算目标值与当前元素的差值。如果差值存在于哈希表中,则返回差值对应的索引和当前元素的索引。如果差值不存在于哈希表中,则将当前元素和索引插入到哈希表中。最后,如果没有找到符合条件的两个元素,则返回一个空的向量。
在上述示例中,给定的数组`nums`为`{2, 7, 11, 15}`,目标值`target`为`9`。输出结果为:
```
Indices: 0, 1
```
这表示数组中下标为0和1的元素2和7的和为目标值9。
阅读全文