题目描述
给定一个整数数组 nums 和一个目标值 target,请你在数组中找出和为目标值的两个整数,并输出它们的下标。
假设每种输入只会对应一个答案,且不能重复使用同一个元素。
输入描述
第一行输入一个整数 n,表示数组长度。
第二行输入 n 个整数,表示数组 nums。
第三行输入一个整数 target。
输出描述
输出两个下标,按从小到大顺序输出,中间用空格分隔。
如果不存在,输出 -1。
示例 1
输入
text
4
2 7 11 15
9
输出
text
0 1
C++ 解法
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) cin >> nums[i];
int target;
cin >> target;
unordered_map<int, int> mp;
for (int i = 0; i < n; i++) {
int need = target - nums[i];
if (mp.count(need)) {
cout << mp[need] << " " << i << endl;
return 0;
}
mp[nums[i]] = i;
}
cout << -1 << endl;
return 0;
}