11-06 第三大的数

原题链接
在这里插入图片描述

解析:
利用了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;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_45885232/article/details/109540618
今日推荐