java - 给定一个整数数组,找出数组中第三大的值

标签 java

public int thirdLargest(int[] arr){

        int f_l = arr[0];
       int s_l = arr[0];
        int t_l = arr[0];

        for(int i=1;i<arr.length;i++)
        {
        if (f_l < arr[i]){
        t_l = s_l;
        s_l = f_l;
        f_l = arr[i];
        }
        else if (s_l < arr[i]){
        t_l = s_l;
        s_l = arr[i];
        }
        else if (t_l < arr[i]){
        t_l = arr[i];
        }
        }
    return t_l;
 }

我的代码没有通过一些案例,有什么建议吗?

parameter {24,27,30,31,34,37,40,42}' , passes

parameter {2,-1,-2,-3,-4,-5}' , fails

最佳答案

这仅仅是因为您将所有值初始化为 arr[0]。如果所有元素都小于 arr[0],此代码将不会更新值,即使第二大元素不是 arr[0] .而是使用 Integer.MIN_VALUE 初始化第三个/第二个/最大值的变量,并从第一个元素(索引 = 0)而不是第二个元素开始搜索。

关于java - 给定一个整数数组,找出数组中第三大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236911/

相关文章:

java - 并行执行线程超时

java - 使用 Maven 构建 spring-boot 项目时将文件复制到 jar 根目录

java - 为什么不序列化呢?

java - 如果在多个线程上读取但不修改,Java 集合是否安全?

java - JComboBox 选择的索引更改用于使用按钮单击事件将不同的 JTextField 值发送到 JTable

java - Java 中 Math.floorDiv 的 ceil 对应部分?

java - Java中的多线程编程

java - 在没有给定数字集的情况下,找到所有可能的数字组合以达到给定的总和(Java)

java - 以消息格式打印时间戳

java - 递归:扫描数字中数字的频率:redux