首页 > 试题广场 >

找不同

[编程题]找不同
  • 热度指数:1044 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛牛最近迷上了《找不同》这个小游戏,在这个游戏中,每一轮,会给你两张很相似的照片,需要你指出其中的所有不同之处。

这一天,牛牛玩着这个游戏,路过牛妹身旁,偶然间注意到牛妹正对着很多数字发呆。牛牛瞄了一眼数字,随手指了一个数字,说这个数字在这些数中只出现了一次。经过牛妹人工检验,发现牛牛说得对。

牛妹非常好奇牛牛的这个新能力,觉得是因为牛牛玩《找不同》玩多了,于是对于这类不同于其它的部分特别敏感。

为了进一步检测牛牛的能力,牛妹决定拟定一份问卷,让牛牛回答,每份问卷中有若干道题目,每道题目含有若干个数字,需要牛牛快速回答出,每道题所给的数字中,最小的一个只出现了一次的数字是什么?

由于题量很多,显然不能让牛妹人工核对答案,于是向你求助,希望你能给予牛妹帮助。

输入描述:
第一行输入一个正整数 ,代表这份问卷的题目总数。

对于每道题,第一行输入一个正整数 ,代表这道题中的数字个数。
第二行输入 个正整数 ,代表这道题中的每个数字。


输出描述:
对于问卷中的每道问题,一行输出一个整数代表答案;特殊的,如果不存在这样的数字,则输出  代表无解。
示例1

输入

2
3
6 6 6
3
6 9 6

输出

-1
9

说明

第一组测试数据,所有数字均为 \text 6,无解。
第二组测试数据,两个数字为 \text 6,一个数字为 \text 9,根据题意可以发现,答案为数字 \text 9.
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while (n-- > 0) {
            int m = sc.nextInt();
            int[] arr = new int[1005];
            for (int i = 0; i < m; i++) {
                arr[sc.nextInt()]++;
            }
            int i = 0;
            for (; i < arr.length; i++) {
                if (arr[i] == 1) {
                    break;
                }
            }
            if (i < arr.length) {
                System.out.println(i);
            } else {
                System.out.println(-1);
            }
        }
    }
}
发表于 2022-09-29 22:01:01 回复(0)