Skip to content

414. Third Maximum Number

Array Sorting

Problem - 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:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

 

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

Solutions

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        val1 = val2 = val3 = float('-inf')
        for num in nums:
            if num in [val1, val2, val3]:
                continue
            elif num > val1:
                val1, val2, val3 = num, val1, val2
            elif num > val2:
                val2, val3 = num, val2
            elif num > val3:
                val3 = num

        return val3 if val3 != float('-inf') else val1

Submission Stats:

  • Runtime: 0 ms (100.00%)
  • Memory: 18.4 MB (90.08%)