Description:
题目大意:找到一个序列中唯一且是最小的那个数的下标。(感叹我的语言描述真是越来越精炼了)
解题思路:
算法标签:模拟
记录每个数字出现的次数以及其下标,然后从1开始寻找,第一个找到的数字的下标就是答案。(没什么难度,只是不想做英语阅读,用这个提升英语能力!)
代码:
// TSWorld
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int N = 200005;
int times[N];
int number;
int index[N];
int main()
{
int T = 0,n = 0;
int minn = 0,ans = 0;
cin>>T;
while(T--) {
scanf("%d",&n);
ans = 0;
minn = n;
bool isok = false;
for(int i = 1;i <= n;i++)
times[i] = 0;
for(int i = 1;i <= n;i++) {
scanf("%d",&number);
times[number]++;
index[number] = i;
}
if(n == 1){
cout<<1<<endl;
continue;
}
for(int i = 1;i <= n;i++) {
if(times[i] == 1) {
isok = true;
ans = index[i];
break;
}
}
if(!isok)
cout<<"-1"<<endl;
else
cout<<ans<<endl;
}
return 0;
}