414. Third Maximum Number

来源:互联网 发布:淘宝店铺模板怎么上传 编辑:程序博客网 时间:2024/05/22 15:16

给定一个序列,返回序列的第三大的数,如果不存在第三大的数返回最大的数。注意这里的前三个最大的数不包含并列相等的情况。

这个题目看似简单,但是一定有很好很简洁的解决办法。

参考别人的代码:

使用set,较为简洁.因为set有自动排序功能。另外代码的简洁体现在:

(1)使用插入操作,当大于四个时,删除头部;采用的是先插入再删除。如果采用先删除在插入,代码较繁琐。

(2)返回部分采用的是begin()和rbegin(),省去了一些判断语句。

这个题重点掌握哪些操作在set中可以用。

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


0 0
原创粉丝点击