时间限制:1s内存限制:256M
题目描述
给定一个长度为 n 的整数数组 a1,a2,…,an。
请你找到数组中只出现过一次的数当中最小的那个数。
输出找到的数的索引编号。
a1 的索引编号为 1,a2 的索引编号为 2,…,an 的索引编号为 n。
【输入格式】
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
【输出格式】
每组数据输出一行结果,即满足条件的数的索引编号,如果不存在满足条件的数,则输出 −1。
【输入输出样例#1】
输入#1
2 2 1 1 3 2 1 3
输出#1
-1 2
【输入输出样例#2】
输入#2
4 4 2 2 2 3 1 1 5 2 3 2 4 2 6 1 1 5 5 4 4
输出#2
4 1 2 -1
【输入输出样例#3】
输入#3
3 2 2 1 6 5 5 4 3 1 1 7 1 2 3 4 3 2 1
输出#3
2 4 4
【数据范围】
1≤T≤2×10^4;1≤n≤2×10^5;1≤ai≤n
同一测试点内的所有 n 的和不超过 2*10^5
———————————————————————————————————————————
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T ;
cin>>T;
while(T--)//题目中说有T组数据的话不管三七二十一先写一个while循环,里面写执行一次的代码
{
int n,s[200005]={},f[200005]={};
bool q=false;
cin>>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
s[a]++;
f[a]=i;
}
for(int i=1;i<=n;i++)
{
if(s[i]==1)
{
cout<<f[i]<<endl;
q=true;
break;
}
}
if(q==false)
{
cout<<-1<<endl;
}
}
}