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 } }