📜  门|门CS 2008 |第 66 题(1)

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

门门CS 2008 第 66 题

这是一道门门CS 2008年考试第66题。这道题目要求编写程序从给定数组中寻找最小值和次小值。如果数组中没有次小值,则输出-1。

示例输入
{3, 1, 5, 6, 7, 2}
示例输出
1 2
程序思路

我们可以使用两个变量来保存最小值和次小值,对于每一个元素,我们判断它是否比最小值小,如果是,则将最小值赋为该元素,将次小值赋为原最小值。

如果该元素不是最小值,但却比次小值小,那么我们更新次小值为该元素。最终输出最小值和次小值即可。如果次小值没有被更新过,则输出-1。

代码实现
int[] arr = {3, 1, 5, 6, 7, 2};
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
for(int i=0; i<arr.length; i++){
    if(arr[i] < min1){
        min2 = min1;
        min1 = arr[i];
    } else if(arr[i] < min2){
        min2 = arr[i];
    }
}
if(min2 == Integer.MAX_VALUE){
    System.out.println(-1);
} else {
    System.out.println(min1 + " " + min2);
}

这里我们使用了Java语言进行实现。对于其他语言,实现思路大致相同,只需要根据具体语言语法进行相应修改即可。