首页 > 试题广场 >

找不同

[编程题]找不同
  • 热度指数:1036 时间限制: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.
纯用列表(下标计数)
T = int(input())
for i in range(T):
    n = int(input())
    nums = list(map(int,input().split()))
    #找到个数为1的数,求最小
    count = [0]*1001
    res = []
    for j in nums:
        count[j] += 1 
    try:
        res.append(count.index(1))
    except:
        pass
    if res == []:
        print(-1)
    else:
        print(min(res))


发表于 2022-04-07 10:05:11 回复(0)