版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/91129010
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
对于每组输入,请输出结果。
2
1 3
0
-1
不敢相信这是哈工大机试题(牛客网上写的),好起来了,查找数组中的元素下标 直接无脑用unordered_map,其中unordered_map的key是元素,value是该元素的下标。如果unordered_map中不存在这个元素就会得到0 而题目要求输出-1,如果存在这个元素,则输出m[x]-1(因为在unordered_map中 我是从1开始记录下标的 所以输出的时候需要减1)。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
cin >> n;
unordered_map<int,int> m;
for(int i = 1; i <= n; i++)
{
cin >> x;
m[x] = i;
}
cin >> x;
//printf("%d\n", m[x] ? m[x]-1 : -1); //元素不存在就输出-1
cout << m[x]-1 << endl; //其实上面可以这样写成输出m[x]-1
return 0;
}