414. Third Maximum Number

来源:互联网 发布:浏览器默认端口号 编辑:程序博客网 时间:2024/06/03 23:47

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.

Example 2:

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

Example3:

Input: [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.

题解

找出第三大的数(不重复计算),如果没有返回最大的数。

使用set维持三个最大的数,时间复杂度O(n), 空间O(1)

class Solution {public:    int thirdMax(vector<int>& nums) {        set<int> top3;        for(int num : nums){            top3.insert(num);            if (top3.size() > 3)    top3.erase(top3.begin());        }        return top3.size() == 3 ? *top3.begin() : *top3.rbegin();    }};
0 0