获取数组中第三大的数

简介: 获取数组中第三大的数

获取数组中第三大的数

题目:给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例1:

输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。

示例2:

输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。

示例3:

输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

思路

  • 我们可以遍历数组,同时用一个有序集合来维护数组中前三大的数。具体做法是每遍历一个数,就将其插入有序集合,若有序集合的大小超过 3,就删除集合中的最小元素。这样可以保证有序集合的大小至多为3,且遍历结束后,若有序集合的大小为3,其最小值就是数组中第三大的数;若有序集合的大小不足3,那么就返回有序集合中的最大值。
  • java中Treeset可以实现对添加的数进行排序存储。
class Solution {
    public int thirdMax(int[] nums) {
        TreeSet<Integer> s = new TreeSet<Integer>();
        for (int num : nums) {
            s.add(num);
            if (s.size() > 3) {
                s.remove(s.first());//将第一个数移出
            }
        }
        return s.size() == 3 ? s.first() : s.last();
    }
}
相关文章
|
5月前
|
Java 编译器 Go
常量能获取地址吗?
常量能获取地址吗?
|
8月前
|
C++ 索引
C++ 获取数组大小、多维数组操作详解
本文介绍了如何获取数组的大小和使用`sizeof()`运算符。`sizeof()`返回数组所占字节数,而非元素个数。要获取元素个数,需除以单个元素的大小。此外,文章展示了如何使用`sizeof()`遍历数组,包括多维数组。多维数组是数组的数组,可用来表示网格。文中以战舰游戏为例说明了多维数组的应用。最后提到了微信公众号`Let us Coding`以获取更多内容。
136 0
|
人工智能
求数组满足条件个数
求数组满足条件个数
104 0
思考让人学有所得,学有所获
思考让人学有所得,学有所获
|
JavaScript
js获取数组中最大值
js获取数组中最大值
86 0
打印数组0-9的取地址,并找规律(2种方法)
打印数组0-9的取地址,并找规律(2种方法)
141 0
打印数组0-9的取地址,并找规律(2种方法)
|
前端开发 JavaScript
Javascript获取数组中的最大值和最小值方法汇总
方法一  sort()方法 b-a从大到小,a-b从小到大 var max2 = arr.sort(function(a,b){     return b-a; })[0]; console.log(max2)   方法二 //最小值 Array.
1419 0
获取数组的度
获取数组的度(算法题)
Java数组中找出两个相加等于某个值的数据下标
Java数组中找出两个相加等于某个值的数据下标
Java数组中找出两个相加等于某个值的数据下标

热门文章

最新文章

下一篇
开通oss服务