Third Maximum Number

Third Maximum Number

题目描述:

给定一个数组,要求找到数组中的第三大的数字。

例子:

具体描述见LeetCode414

解题思路:

这道题主要的注意的点或者说技巧在于,我们可以用一个set来保存数字。set本身使用的是红黑色作为底层实现,所以每次插入都是保持有序的状态。所以我们可以不断将数插入到set中,然后根据是否已经超过三个数来决定要不要删除set中的数。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int thirdMax(vector<int>& nums) {
set<int> hash;
for (auto num: nums){
hash.insert(num);
if (hash.size() > 3)
hash.erase(hash.begin());
}
return hash.size() == 3 ? *hash.begin() : *hash.rbegin();
}
};