IncredibleThings

导航

LeetCode - 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) {
        long first = Long.MIN_VALUE;
        long second = Long.MIN_VALUE;
        long third = Long.MIN_VALUE;
        
        for (int n : nums) {
            if (n > first) {
                third = second;
                second = first;
                first = n;
            }
            else if (n < first && n > second) {
                third = second;
                second = n;
            }
            else if (n < second && n > third) {
                third = n;
            }
        }

        if ( third == Long.MIN_VALUE ) {
            return (int)first;
        }
        return (int)third;
        
    }
}

 

posted on 2020-01-16 14:26  IncredibleThings  阅读(117)  评论(0)    收藏  举报