题意
n个数中 找到只出现一次且是最小的数
输出这个数的下标
思路
数据范围 2e4 (t) 和 2e5 (n)
好家伙 直接枚举一遍的话 都4e9了 (但是没关系 cf 有时候1e10都能跑)
所以秉承着 数据不会卡我 1e9又如何的 陋习 直接把一个普通做法交上去了
- 对数的下标进行 映射存放
- 对数值重复出现的个数 进行统计
CODE
#include <bits/stdc++.h>
#define CYE cout<<"Yes"<<endl;
#define CNE cout<<"No"<<endl;
#define C_1E cout<<"-1"<<endl;
using namespace std;
const int INF = 0x3f3f3f3f;
unordered_map<int,int> mp;
unordered_map<int,int> st;
unordered_map<int,int>::iterator it;
void solve()
{
mp.clear();
st.clear();
int n;
cin>>n;
int ans = -1;
for(int i=1; i<=n; i++)
{
int x;
cin>>x;
mp[x] = i;
st[x] ++;
}
int minn = INF;
for(it=mp.begin(); it!=mp.end(); it++)
{
if(st[it->first] == 1)
{
if(minn>it->first)
{
minn = it->first;
ans = it->second;
}
}
}
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t -- )
solve();
return 0;
}