解析:
利用了set的自动去重和排序,由于set默认从小到大进行排序,因此重载了排序方式:
set<int, greater<int>> ss;
这样便是从大到小进行排序,之后判断set中的数字个数,当有两个的时候输出的最大的数,当有一个的时候是其本身,当有三个的时候输出最终结果即可。
class Solution {
public:
int thirdMax(vector<int>& nums) {
set<int, greater<int>> ss;
int len = nums.size();
for(int i=0; i<len; i++)
{
ss.insert(nums[i]);
}
int cnt = 0, ans;
for(set<int>::iterator it=ss.begin(); it!=ss.end(); it++)
{
cnt++;
if(ss.size() == 1 && cnt == 1)
{
ans = *it;
}else if(ss.size() == 2 && cnt == 2)
{
ans = *ss.begin();
}
else if(cnt == 3 && ss.size() > 2)
{
ans = *it;
}
}
return ans;
}
};