📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 79(1)

📅  最后修改于: 2023-12-03 14:50:47.988000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 |问题 79

问题描述

给定一组整数,编写一个程序,找到其中第二最小的数。

输入

输入的第一行包含一个整数T,表示测试用例的数量。每个测试用例的第一行包含一个整数N,表示该组测试用例中输入整数的数量。每个测试用例的第二行包含输入的整数。

输出

对于每个测试用例,输出一行,包含第二个最小的整数。 如果不存在第二小的整数,则输出-1。

示例

输入:

2
5
1 2 3 4 5
6
6 6 6 6 6 6

输出:

2
-1
解题思路

题目要求找到第二小的整数,且数据规模较小,我们可以使用排序后再次遍历数组来求解。

  • 将输入数组排序,即可通过关键字获得第二小的整数。

  • 利用集合去重后求指定位置值。

代码实现
def find_second_minimum(numbers):
    sorted_numbers = sorted(numbers)
    second_minimum = sorted_numbers[0]

    for i in range(1, len(numbers)):
        if sorted_numbers[i] > second_minimum:
            return sorted_numbers[i]
    return -1


t = int(input())
for _ in range(t):
    n = int(input())
    numbers = list(set(map(int, input().split())))

    if len(numbers) <= 1:
        print(-1)
    else:
        print(find_second_minimum(numbers))

通过以上代码,我们可以通过输入数据进行测试,测试结果与预期相符。