首页 > 其他分享 >求数组中第三大的数

求数组中第三大的数

时间:2023-09-11 21:55:51浏览次数:32  
标签:secondMax firstMax nums 第三 num 数组 thirdMax null

// 1.从数组中找出第三大的数,例如{10,10,9,9,8,8,7,7} 第三大的数是8

public class ThirdLargestNumber {
    public static void main(String[] args) {
        int[] nums = {10, 10, 9, 9, 8, 8, 7, 7};
        int thirdLargest = findThirdLargest(nums);
        System.out.println("第三大的数是:" + thirdLargest);
    }

    public static int findThirdLargest(int[] nums) {
        if (nums.length < 3) {
            throw new IllegalArgumentException("数组长度不足");
        }

        Integer firstMax = null;
        Integer secondMax = null;
        Integer thirdMax = null;

        for (Integer num : nums) {
            if (num.equals(firstMax) || num.equals(secondMax) || num.equals(thirdMax)) {
                continue;
            }

            if (firstMax == null || num > firstMax) {
                thirdMax = secondMax;
                secondMax = firstMax;
                firstMax = num;
            } else if (secondMax == null || num > secondMax) {
                thirdMax = secondMax;
                secondMax = num;
            } else if (thirdMax == null || num > thirdMax) {
                thirdMax = num;
            }
        }

        if (thirdMax == null) {
            throw new IllegalArgumentException("不存在第三大的数");
        }

        return thirdMax;
    }
}

标签:secondMax,firstMax,nums,第三,num,数组,thirdMax,null
From: https://www.cnblogs.com/chenyi502/p/17694638.html

相关文章

  • 剑指 Offer 66. 构建乘积数组
    题目链接:剑指Offer66.构建乘积数组题目描述:**给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B[i]的值是数组A中除了下标i以外的元素的积,**即B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。解法思路:代码:funcconstructArr(a[......
  • 实现数组去重的七种方法
    1.方法一:利用两层循环+数组的splice方法通过两层循环对数组元素进行逐一比较,然后通过splice方法来删除重复的元素。此方法对NaN是无法进行去重的,因为进行比较时NaN!==NaN。letarr=[1,2,2,'abc','abc',true,true,false,false,undefined,undefined,NaN,NaN]functi......
  • LeetCode 53. 最大子数组和
    最大子数组和(medium)题目链接:53.最大子数组和题目描述:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的......
  • LeetCode 918. 环形子数组的最大和
    环形子数组的最大和(medium)题目链接:918.环形子数组的最大和题目描述:给定一个长度为n的环形整数数组nums,返回nums的非空子数组的最大可能和。环形数组意味着数组的末端将会与开头相连呈环状。形式上,nums[i]的下一个元素是nums[(i+1)%n],nums[i]的前一......
  • swift5 区间类型和数组转化
    在Swift5中,你可以使用区间(Range)类型来表示一系列连续的数字,并且可以使用一些内置的函数和方法将区间类型和数组(Array)之间进行转换。首先,我们来了解一下如何创建和使用区间类型。创建区间类型:swiftletrange=1...5//创建一个闭区间,包括1到5letopenRange=1..<5//创建......
  • 剑指 Offer 56 - II. 数组中数字出现的次数 II
    题目链接:剑指Offer56-II.数组中数字出现的次数II题目描述:在一个数组nums中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。解法思路:代码:......
  • 数据库基础面试第三弹
    1.mysql数据库四种常见数据库引擎1.MyISAM:MyISAM是MySQL最早的数据库引擎之一。它被设计成处理大量的插入和查询操作。MyISAM表格的数据存储在三个文件上:.frm文件存储表结构,.MYD文件存储数据,.MYI文件存储索引。MyISAM表格不支持事务处理和崩溃恢复,因此在并发写入操作和故障发......
  • 【学习笔记】树状数组
    PS:未经许可,禁止转载。思路来源于我的老师$\text{hoogy}$,非常感谢,%%%。-五分钟丝滑动画讲解|树状数组-〔manim|算法|数据结构〕完全理解并深入应用树状数组单点修改,区间查询前置芝士:一维前缀和设原数组$a$,前缀和数组$b$,则有:$b[i]=\sum\limits_{j=1}^ia[j]$。推......
  • #yyds干货盘点# LeetCode程序员面试金典:第三大的数
    1.简述:给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例1:输入:[3,2,1]输出:1解释:第三大的数是1。示例2:输入:[1,2]输出:2解释:第三大的数不存在,所以返回最大的数2。示例3:输入:[2,2,3,1]输出:1解释:注意,要求返回第三大的数,是指在所......
  • 数组
        ......