帮我写到编程题,用c++
时间: 2024-09-29 15:02:30 浏览: 30
题目描述:编写一个C++程序,给定一个整数数组`nums`和一个目标值`target`,找到数组中两个元素之和等于目标值的下标。如果不存在这样的组合,返回-1。
```cpp
#include <vector>
#include <unordered_map>
using namespace std;
pair<int, 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.find(complement) != map.end()) { // 如果差值已经在映射中
return {map[complement], i}; // 返回对应的两个元素下标
}
map[nums[i]] = i; // 将当前元素及索引添加到映射中
}
return {-1, -1}; // 如果没有找到符合条件的元素对,返回{-1, -1}
}
int main() {
vector<int> nums = {2, 7, 11, 15};
int target = 9;
pair<int, int> result = twoSum(nums, target);
if (result.first != -1 && result.second != -1) {
cout << "Elements at indices " << result.first << " and " << result.second << " sum up to " << target << endl;
} else {
cout << "No such pair found." << endl;
}
return 0;
}
阅读全文