414. 第三大的数
创始人
2024-06-02 05:53:07
0

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/third-maximum-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例 1:
输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
示例 2:
输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:
输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

题解: 这道题很简单

  • 排序 知道从右数第三个数字
  • 使用优先级队列,建立小堆

注意,这道题有点坑,我们这里需要去重,排序最好使用set去重+排序

class Solution
{
public:int thirdMax(vector &nums){if (nums.empty() == true)return -1;// 找第三个大的数字  -- 建立小堆priority_queue, greater> q; // 建立小对unordered_set set;for (auto e : nums){set.insert(e);}unordered_set::iterator it = set.begin();int i = 0;while (it != set.end()){if (i < 3){// 入堆q.push(*it);i++;}else{// 判断 如果 当前数据大于堆顶int ret = q.top();if (*it > ret){q.pop();q.push(*it);}}++it;}// for (size_t i = 0; i < nums.size(); i++)// {//   if (i < 3)//   {//     // 入堆//     q.push(nums[i]);//   }//   else//   {//     // 判断 如果 当前数据大于堆顶//     int ret = q.top();//     if (nums[i] > ret)//     {//       q.pop();//       q.push(nums[i]);//     }//   }// }if (q.size() != 3){while (q.size() != 1){q.pop();}}return q.top();}
};

在这里插入图片描述

相关内容

热门资讯

一个女孩说其实你不用在我身上花... 一个女孩说其实你不用在我身上花时间的,该怎么回复?我,都会永远信赖你,无论你,将我放在任何空间里,你...
暴雨黄色预警!济南启动今年第二...   7月7日19时50分,济南市气象局发布暴雨黄色预警,预计7日前半夜历下区、市中区、槐荫区、天桥区...
以色列拟在拉法建“人道主义城”... 据以色列多家媒体7日报道,以国防部长卡茨当天表示,他已指示军方制定计划,在加沙地带南部拉法市的废墟上...
人生在世乃昙花一现的意思? 人生在世乃昙花一现的意思?昙花一现指的是昙花盛开到落幕只有一刹那的时间,很短暂。这句话整句的意思是:...
近3000家完成年度利润分配,... Wind数据显示,截至7月7日19时,A股共有2931家上市公司实施完毕2024年年度利润分配方案。...
年内港股私有化退市频现,并购与... 私有化已成为港股退市的重要路径之一。Wind资讯数据显示,按摘牌日期计,截至7月5日,年内港股退市公...
“喜聚辽宁”持续打造文旅融合坐... 转自:辽宁日报 7月5日,参加喜剧电影周的嘉宾、电影人探访沈阳中晨电影小镇喜剧工厂街区...
女人到了中年,学会做一个冷漠的... 女人到了中年,学会做一个冷漠的人,后半生才会越过越好吗?当然不会了,因为人到中年的时候需要很多的人脉...
日产骐达cvt变速箱的d档和l... 日产骐达cvt变速箱的d档和l档之间可以随时转换吗?“日产骐达CVT变速箱的D档位和L档位之间不能随...
问:求一部小说名,现在修真,在... 问:求一部小说名,现在修真,在一个书摊买了一本书开始修炼,自己给他练的功夫起名元道气,李无名的《现代...