📅  最后修改于: 2023-12-03 15:12:44.728000             🧑  作者: Mango
这是 GATE-IT-2004 的问题 37,它是一道关于编程的问题。在这个问题中,我们需要编写一个程序,该程序要求我们从一个给定的整数集合中找到最小值和次小值。
让我们看看这个问题的详细描述:
你有一个整数集合,需要从其中找到最小值和次小值,然后将它们存储在一个数组中并返回该数组。如果有两个或多个数字具有相同的最小值或次小值,则该数组中只包含一个实例。
请编写一个函数 find_min_and_second_min
来实现上述功能。该函数应将两个最小值存储在具有两个元素的数组 result
中,并返回该数组。
函数 find_min_and_second_min
接受一个整数集合 arr
,其中 arr
的长度为 n
(0 <= n <= 10^4)。
函数 find_min_and_second_min
返回一个具有两个元素的整数数组 result
。
让我们看看一个样例:
输入:
find_min_and_second_min([9, 2, 3, 6, 4, 8, 1, 5, 7])
输出:
[1, 2]
要解决这个问题,我们可以使用以下算法:
下面是该算法的 Python 代码实现:
import sys
def find_min_and_second_min(arr):
if len(arr) < 2:
return None
min_val = sys.maxsize
second_min_val = sys.maxsize
for i in range(len(arr)):
if arr[i] < min_val:
second_min_val = min_val
min_val = arr[i]
elif arr[i] < second_min_val and arr[i] != min_val:
second_min_val = arr[i]
return [min_val, second_min_val]
现在,我们用以下代码进行测试:
print(find_min_and_second_min([9, 2, 3, 6, 4, 8, 1, 5, 7])) # [1, 2]
print(find_min_and_second_min([1, 1, 1, 1])) # None
第一个测试用例返回 [1, 2]
,正如我们在问题描述中所预期的那样。第二个测试用例返回 None
,这是因为数组中的所有元素相同,所以无法找到第二个最小值。
这道题目主要考察了我们对数组和算法的理解。通过使用 Python 语言,我们可以轻松地实现此算法,并快速成功地完成测试用例。