LeetCode每日一题:第三大的数(No.414)

栏目: 编程工具 · 发布时间: 6年前

给定一个非空数组,返回此数组中第三大的数。
如果不存在,则返回数组中最大的数。
复制代码

示例:

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

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

输入: [2, 2, 3, 1]
输出: 1
解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。
复制代码

思考:

定义三个Integer对象max1,max2,max3来记录前三大的数,默认为null。
遍历数组,进行比较。
如果max1为空或者当前元素大于max1,说明当前元素是最大元素,则将原先的max2赋值给max3.max1赋给max2,当前元素赋给max1。
如果max1不为空且当前元素不大于max1,再比较,如果max2为空或者当前元素大于max2小于max1,说明当前元素是第二大元素。
所以将原max2赋给max3,当前元素赋值给max2。
如果max2不为空且当前元素不大于max2小于max1,再比较,如果max3为空或者当前元素大于max3小于max2(这里要先判断下max2不为空,防止出现重复元素时报错),就将当前元素赋值给max3。
最后判断max3是否为null,不为null返回max3,null则返回max1。
复制代码

实现:

class Solution {
    public int thirdMax(int[] nums) {
        if (nums.length == 1) {
            return nums[0];
        }
        if (nums.length == 2) {
            return Math.max(nums[0], nums[1]);
        }
        Integer max1 = null;
        Integer max2 = null;
        Integer max3 = null;
        for (int count = 0; count < nums.length; count++) {
            if (max1 == null || (nums[count] > max1)) {
                max3 = max2;
                max2 = max1;
                max1 = nums[count];
            } else if ((max2 == null || nums[count] > max2) && nums[count] < max1) {
                max3 = max2;
                max2 = nums[count];
            } else if ((max3 == null || nums[count] > max3) && max2 != null && nums[count] < max2) {
                max3 = nums[count];
            }
        }
        return max3 != null ? max3 : max1;
    }
}复制代码

以上所述就是小编给大家介绍的《LeetCode每日一题:第三大的数(No.414)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective JavaScript

Effective JavaScript

赫尔曼 (David Herman) / 黄博文、喻杨 / 机械工业出版社 / 2014-1-1 / CNY 49.00

Effective 系列丛书经典著作,亚马逊五星级畅销书,Ecma 的JavaScript 标准化委员会著名专家撰写,JavaScript 语言之父、Mozilla CTO —— Brendan Eich 作序鼎力推荐!作者凭借多年标准化委员会工作和实践经验,深刻辨析JavaScript 的内部运作机制、特性、陷阱和编程最佳实践,将它们高度浓缩为极具实践指导意义的 68 条精华建议。 本书共......一起来看看 《Effective JavaScript》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具