c++给定一个int型数组 array 和一个整数 target,请你在该数组中找出和为 target 值的两个int型元素,并返回它们在数组中的下标。
时间: 2024-03-20 15:39:12 浏览: 73
两数之和:在该数组中找出和为目标值的那两个整数,并返回他们的数组下标
好的,这是一道经典的数组题目,可以使用哈希表来解决。具体思路如下:
1. 首先创建一个哈希表 unordered_map<int, int> map,用来存储数组中每个元素及其下标。
2. 遍历数组 array,对于每个元素 nums[i],在哈希表中查找是否存在一个 key 为 target - nums[i] 的元素,如果存在,则说明找到了两个元素的和为 target。
3. 如果哈希表中不存在这样的元素,则将当前元素及其下标存入哈希表中,继续遍历数组。
4. 如果遍历完整个数组仍然没有找到符合条件的元素,则返回一个空的下标数组。
下面是完整的 C++ 代码实现:
```c++
#include <unordered_map>
#include <vector>
using namespace std;
vector<int> twoSum(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.count(complement)) {
return {map[complement], i};
}
map[nums[i]] = i;
}
return {};
}
```
这里使用了 count 方法来判断哈希表中是否存在某个元素,如果存在则返回值为 1,否则为 0。如果使用 find 方法,则需要判断返回值是否等于哈希表的 end 迭代器,稍微麻烦一些。
阅读全文