## Description

https://leetcode.com/problems/third-maximum-number/

Given integer array `nums`

, return *the third maximum number in this array*. If the third maximum does not exist, return the maximum number.

**Example 1:**

Input:nums = [3,2,1]Output:1Explanation:The third maximum is 1.

**Example 2:**

Input:nums = [1,2]Output:2Explanation:The third maximum does not exist, so the maximum (2) is returned instead.

**Example 3:**

Input:nums = [2,2,3,1]Output:1Explanation:Note that the third maximum here means the third maximum distinct number. Both numbers with value 2 are both considered as second maximum.

**Constraints:**

`1 <= nums.length <= 10`

^{4}`-2`

^{31}<= nums[i] <= 2^{31}- 1

**Follow up:** Can you find an `O(n)`

solution?

## Explanation

The easiest way is to sort and find the third largest.

## Python Solution

```
class Solution:
def thirdMax(self, nums: List[int]) -> int:
nums = list(set(nums))
nums = sorted(nums)
if len(nums) < 3:
return nums[-1]
return nums[-3]
```

- Time Complexity: O(log(N)).
- Space Complexity: O(N).