414. Third Maximum Number

package LeetCode_414

/**
 * 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.
 * */
class Solution {
    /*
    * Time complexity:O(n), Space complexity:O(1)
    * */
    fun thirdMax(nums: IntArray): Int {
        var max1: Int? = null
        var max2: Int? = null
        var max3: Int? = null
        for (num in nums) {
            //avoid some same continue number
            if (num == max1 || num == max2 || num == 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 if (max3 == null) max1!! else max3
    }
}
原文地址:https://www.cnblogs.com/johnnyzhao/p/13774266.html