> For the complete documentation index, see [llms.txt](https://anton-veselskyi.gitbook.io/codding-problems-solutions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anton-veselskyi.gitbook.io/codding-problems-solutions/leetcode/easy/third-maximum-number.md).

# Third Maximum Number

## [Third Maximum Number](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: 1
Explanation: The third maximum is 1.
```

**Example 2:**

```

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

**Example 3:**

```

Input: nums = [2,2,3,1]
Output: 1
Explanation: 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 <= 104`
* `231 <= nums[i] <= 231 - 1`

&#x20; **Follow up:** Can you find an `O(n)` solution?

## Solutions

### 🧠 Cpp

```cpp
class Solution
{
public:
    int thirdMax(vector<int> nums)
    {
        std::sort(nums.begin(), nums.end());
        nums.erase(std::unique(nums.begin(), nums.end()), nums.end());

        const size_t uniq_size = nums.size();
        if(uniq_size < 3)
            return nums[uniq_size-1];
        else
        {
            return nums[uniq_size-3];
        }
    }
};
```
