【leetcode】414. Third Maximum Number

Given a non-empty array of integers, 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).

Example 1:

Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.

 

Example 2:

Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.

 

Example 3:

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.

 

題解如下:

class Solution {
    public int thirdMax(int[] nums) {
        Integer max1 = null;
        Integer max2 = null;
        Integer max3 = null;
        for(Integer num:nums) {
            if(num.equals(max1) || num.equals(max2) || num.equals(max3))
                continue;
            else 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;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章