给定一个长度为 n 的数组,从小到大输出任何至少出现三次的值,如果没有这样的值,则打印 -1。 输入格式 第一行包含整数 t (1 ≤ t ≤ 104)表示测试用例的数量。 每组测试用例的第一行包含一个整数 n (1 ≤ n ≤ 2⋅105)表示数组的长度。 每组测试用例的第二行包含 n 个整数 a1,a2,...,an (1 ≤ ai ≤ n)。 保证测试用例所有 n 的和不超过 2⋅105. 输出格式 对于每组测试用例,按从小到大输出至少出现三次的任何值,如果没有此类值,则打印 -1。C语言
时间: 2024-02-09 18:10:42 浏览: 68
好的,我了解了你的问题。这是一个简单的数组问题。你可以使用计数排序或哈希表来解决它。以下是使用哈希表的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 200005
int n;
int a[MAX_N];
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
int hash[MAX_N] = {0};
for (int i = 1; i <= n; i++) {
hash[a[i]]++;
}
int flag = 0;
for (int i = 1; i <= n; i++) {
if (hash[i] >= 3) {
printf("%d ", i);
flag = 1;
}
}
if (!flag) {
printf("-1");
}
printf("\n");
}
return 0;
}
```
在这个程序中,我们首先输入测试用例的数量 t。然后对于每个测试用例,我们输入数组的长度 n 和数组本身。接下来,我们使用哈希表来计算每个数字出现的次数。最后,我们扫描哈希表并输出至少出现三次的数字。如果没有这样的数字,则输出 -1。
希望这个代码示例可以帮助你解决问题。如果你还有其他问题,请随时问我。
阅读全文