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

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

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

示例:

输入: [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)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

高效能程序员的修炼

高效能程序员的修炼

[美]Jeff Atwood / 陆其明、张健 / 人民邮电出版社 / 2013-7 / 49

jeff atwood于2004年创办coding horror博客(http://www.codinghorror.com),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞。 《高效能程序员的修炼》是coding horror博客中精华文章的集合。全书分为12章,涉及迈入职业门槛、高效能编程、应聘......一起来看看 《高效能程序员的修炼》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试