码迷,mamicode.com
首页 > 其他好文 > 详细

414. Third Maximum Number

时间:2019-01-15 10:47:54      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:lex   color   value   output   complex   must   pre   rdm   time   

return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.

注意,重复的数字不算。

这题本没啥难度,一个小tricky 就是用Integer 来初始化 max1, max2, ,max3, 因为Integer 可以被初始化成null 而不是 Integer.MIN_VALUE, 特别在比大小时候null 比 Integer.MIN_VALUE 有价值。
class Solution {
    public int thirdMax(int[] nums) {
        Integer max1, max2, max3; 
        max1 = null;
        max2 = null; 
        max3 = null;
        
        for(Integer num: nums){   
            if(num.equals(max1) || num.equals(max2) || num.equals(max3)) continue; 
            if(max1 ==null || num> max1){
                max3 = max2;
                max2 = max1;
                max1 = num;
            }  
            else if(max2 ==null || num>max2){
                max3 = max2;
                max2 = num;
            }
            else if(max3 ==null || num>max3){
                max3 = num;
            }
        }
        
       return max3 ==null? max1:max3;
        
    }
}

 

414. Third Maximum Number

标签:lex   color   value   output   complex   must   pre   rdm   time   

原文地址:https://www.cnblogs.com/keepAC/p/10269923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!