java - 最大的第二个数

标签 java

我到处搜索找到第二大数的解决方案,但我在所有网站上都有一个解决方案,而且是错误的。

我找到的代码:

public static void main(String[] args) {
    int arr[] = { 1, 23, 47, 81, 92, 88, 52, 48, 56, 66, 65, 76, 71, 85,
                   49, 53, 56, 61, 65, 84 };
    secondLargeNumber(arr);
}

public static void secondLargeNumber(int[] arr) {
    int largest = arr[0];
    int secondLargest = arr[0];
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] > largest) {
            secondLargest = largest;
            largest = arr[i];
        } else if (arr[i] > secondLargest) {
            secondLargest = arr[i];
        }
    }
    System.out.println("second largest in array is:" + secondLargest);

}

代码工作正常,但如果我将输入序列更改为:

 int arr[] = { 11, 10, 11, 2, 3, 4, 5, 6, 7, 8};

输出将是:

second largest in array is:11

我真的不知道该怎么办了!

最佳答案

只是做:

else if (arr[i] > secondLargest && arr[i] != largest) {
    secondLargest = arr[i];
}

关于java - 最大的第二个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673676/

相关文章:

java - Java构造函数中的循环依赖

java - 如何在Java中使用两个线程将元素存储在一个数组中?

java - 将依赖 jar 插入安装程序 jar

java - 单击“ TableView ”行时将文本设置为“标签”

java - Log4j2 api在OSGi环境下找不到Log4j2核心

java - Android 抽屉导航防止重新加载同一 fragment

java - 在容器中心添加面板

java - 如何在java中实现单位转换器

java - com.microsoft.aad/adal 和 com.microsoft.azure/adal4j 之间有什么区别?

java - Android TextView 重叠