给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。C++
时间: 2024-11-06 14:18:56 浏览: 30
这是一个经典的编程问题,通常被称为“两数之和”(Two Sum)。给定一个整数数组 `nums` 和一个目标值 `target`,你需要找到数组中两个元素的组合,使得这两个元素相加等于 `target`。这个问题可以使用哈希表来解决,步骤如下:
1. 创建一个空的哈希表 `hash_map` 或者 C++ 中的 unordered_map 存储每个元素及其索引。
2. 遍历数组 `nums`,对于每一个元素 `num`:
- 如果 `target - num` 已经存在于哈希表中,说明找到了一对符合条件的数,返回它们的索引(当前元素的索引和对应的 `target - num` 的索引)。
- 否则,将当前元素的值和索引添加到哈希表中,以便后续查找。
3. 如果遍历结束后都没有找到合适的对,那么返回空数组或特定表示未找到的标识。
C++ 代码示例如下:
```cpp
#include <unordered_map>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash_map;
for (int i = 0; i < nums.size(); i++) {
if (hash_map.find(target - nums[i]) != hash_map.end()) {
return {hash_map[target - nums[i]], i};
}
hash_map[nums[i]] = i;
}
return {};
}
```
阅读全文