LeetCode in Kotlin

414. Third Maximum Number

Easy

Given an integer array nums, return the third distinct maximum number in this array. If the third maximum does not exist, return the maximum number.

Example 1:

Input: nums = [3,2,1]

Output: 1

Explanation: The first distinct maximum is 3. The second distinct maximum is 2. The third distinct maximum is 1.

Example 2:

Input: nums = [1,2]

Output: 2

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

Example 3:

Input: nums = [2,2,3,1]

Output: 1

Explanation: The first distinct maximum is 3. The second distinct maximum is 2 (both 2’s are counted together since they have the same value). The third distinct maximum is 1.

Constraints:

Follow up: Can you find an O(n) solution?

Solution

class Solution {
    fun thirdMax(nums: IntArray): Int {
        var max1 = Long.MIN_VALUE
        var max2 = Long.MIN_VALUE
        var max3 = Long.MIN_VALUE
        for (i in nums) {
            max1 = Math.max(max1, i.toLong())
        }
        for (i in nums) {
            if (i.toLong() == max1) {
                continue
            }
            max2 = Math.max(max2, i.toLong())
        }
        for (i in nums) {
            if (i.toLong() == max1 || i.toLong() == max2) {
                continue
            }
            max3 = Math.max(max3, i.toLong())
        }
        return (if (max3 == Long.MIN_VALUE) max1 else max3).toInt()
    }
}