当前位置: 首页 > 面试题库 >

Java程序在数组中查找第二大数字

吕峰
2023-03-14
问题内容

给定一个未排序的数组,您需要找到数组中o(n) 时间复杂度第二大的元素。
例如:

int[] arr1={7,5,6,1,4,2};
Second largest element in the array : 6

问题答案:

您可以对数组进行排序,然后返回数组中的倒数第二个元素,但这将在 o ( nlogn ) 时间内完成,

算法:

  • 用最小可能值初始化最高和第二最高。
  • 迭代数组。
  • 如果当前元素大于最高
    • 分配 secondHighest = 最高
    • 分配最高 = currentElement
  • 否则如果当前元素大于 secondHighest
  • 分配 secondHighest = 当前元素。

在数组中查找第二大数的 Java 程序:
创建名为的主 Java 类 FindSecondLargestMain.java

FindSecondLargestMain.java

package org.arpit.java2blog;

public class FindSecondLargestMain {
    public static void main(String args[])
    {
        int[] arr1={7,5,6,1,4,2};
        int secondHighest=findSecondLargestNumberInTheArray(arr1);
        System.out.println("Second largest element in the array : "+ secondHighest);
    }

    public static int findSecondLargestNumberInTheArray(int array[])
    {
        // Initialize these to the smallest value possible
        int highest = Integer.MIN_VALUE;
        int secondHighest = Integer.MIN_VALUE;

        // Loop over the array
        for (int i = 0; i < array.length; i++) { 
            // If current element is greater than highest 
            if (array[i] > highest) {

                // assign second highest element to highest element 
                secondHighest = highest;

                // highest element to current element
                highest = array[i];
            } else if (array[i] > secondHighest && array[i]!=highest)
                // Just replace the second highest
                secondHighest = array[i];
        }

        // After exiting the loop, secondHighest now represents the second
        // largest value in the array
        return secondHighest;
    }
}

当你运行上面的程序时,你会得到以下输出:

Second largest element in the array : 6

这就是如何在数组中找到第二大数字的全部内容。



 类似资料:
  • 问题内容: 我只是在练习一些MIT Java作业。但是,我不确定如何找到第二大数字。http://ocw.csail.mit.edu/f/13 问题答案: 仅对数组进行排序以查找订单统计信息太浪费了。您可以通过遵循与现有算法相似的算法找到第二大元素,并使用一个代表第二大数字的附加变量。 当前,下一个元素可以大于最大值或等于/小于最大值,因此单个元素就足够了: 考虑两个变量,下一个元素可能是 大于最

  • 问题内容: 我很难理解在数组中找到第二大数字的方法背后的逻辑。所使用的方法是在数组中找到最高的,但小于先前最高的(已经找到)。我仍然不明白的是为什么有必要。例如,我输入了三个数字:98、56、3。没有它,最高和第二高将都是98。请解释。 问题答案: 找到第二高实际上很简单: 这是O(N)一口气。如果你想接受联系,则更改为,但是如果数组中至少有2个元素,它将返回。如果数组仅包含相同的数字,它也将返回

  • 我有一个阵列 我想找到数组第一列的最大值,84 这是我的整个代码,它给我这个数组中每列的最大值

  • 问题内容: 给你一个包含 1 到 n 的整数数组,但数组中从 1 到 n 的数字之一丢失了。您需要提供最佳解决方案来找到丢失的数字。数组中的数字不能重复。 例如: 问题答案: 使用公式 n=n*(n+1)/2 求 n 个数字的总和 查找给定数组中存在的元素的总和。 减法(n 个数字的总和 - 数组中存在的元素的总和)。 查找数组中缺失数字的Java程序: 当你运行上面的程序时,你会得到以下输出:

  • 问题内容: 我需要知道在对象数组中查找第二大元素的方法。例如 如果存在Book类的一系列对象,这些对象的属性如书名,价格,库存数量 我们如何列出价格第二高的书以及其他属性,例如名称和库存数量 问题答案: 做一个的从它,它的排序使用,并采取元素索引1。

  • 我试图找到给定排序数组的最大K数。 ex:输入- 到目前为止,我编写的代码返回最大的K元素,但它需要返回最大的K数字。任何帮助都将不胜感激。