【题目描述】
给定一个长度为 的整数数组 。
请你找到数组中只出现过一次的数当中最小的那个数。
输出找到的数的索引编号。
的索引编号为 , 的索引编号为 ,…, 的索引编号为 。
【输入格式】
第一行包含整数 ,表示共有 组测试数据。
每组数据第一行包含整数 。
第二行包含 个整数 。
【输出格式】
每组数据输出一行结果,即满足条件的数的索引编号,如果不存在满足条件的数,则输出 。
【输入输出样例#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
【数据范围】
【代码样例】
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2 * 1e5 + 5;
struct m {
int i;
int num;
} a[MAXN];
bool cmp(m x, m y) {
return x.i < y.i;
}
int main() {
int t, n;
cin >> t;
while (t--) {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].i;
a[i].num = i;
}
sort(a + 1, a + n + 1, cmp);
int cnt = 1;
m x = a[1];
if (n == 1) {
cout << 1 << endl;
} else {
for (int i = 2; i <= n; i++) {
if (x.i == a[i].i) {
cnt++;
if (i == n) {
cout << -1 << endl;
}
} else {
if (cnt > 1) {
x = a[i];
cnt = 1;
if (i == n) {
cout << x.num << endl;
break;
}
} else {
cout << x.num << endl;
break;
}
}
}
}
}
}