题目描述
找到最小的那个单独数字,找不到就继续找,没有就输出”-1”
算法1
(排序) $O(logn)$
开结构体记录index,排序一个个找
C++ 代码
#include <bits/stdc++.h>
const int N = 2e5 + 10;
using std::cout;
using std::sort;
typedef long long ll;
struct node{
int idx, x;
bool operator < (const node & A)
{
return x < A.x;
}
}a[N];
int main()
{
int T; scanf("%d", &T);
while (T --)
{
bool flag = false;
ll k; scanf("%lld", &k);
for (int i = 1; i <= k; i ++)
{
a[i].idx = i;
scanf("%d", &a[i].x);
}
sort(a + 1, a + 1 + k);
a[k + 1].x = a[0].x = 0;
for (int i = 1; i <= k; i ++)
{
if (a[i].x != a[i + 1].x && a[i].x != a[i - 1].x)
{
printf("%d\n", a[i].idx);
flag = true;
break;
}
}
if (!flag) printf("-1\n");
}
return 0;
}