当前位置: 首页 > news >正文

第三大的数

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

class Solution { public: int thirdMax(vector<int>& nums) { } };

1.排序

class Solution { public: int thirdMax(vector<int>& nums) { sort(nums.begin(), nums.end(), greater<int>()); //默认sort从小到大,现在从大到小排序 for (int i = 1, diff = 1; i < nums.size(); ++i) { if (nums[i] != nums[i - 1] && ++diff == 3) { //前后数字不同,diff加加看数到第几个,这里不可以diff++ return nums[i]; } } return nums[0];//只有一个的才会输出这个 } };

2.有序集合

set有序去重,默认从小到大,没有push那些,插入会变有序所以没有前插后插,只有insert,erase。。

class Solution { public: //遍历数组,同时用一个有序集合来维护数组中前三大的数。具体做法是每遍历一个数,就将其插入有序集合,若有序集合的大小超过 3,就删除集合中的最小元素。这样可以保证有序集合的大小至多为 3,且遍历结束后,若有序集合的大小为 3,其最小值就是数组中第三大的数;若有序集合的大小不足 3,那么就返回有序集合中的最大值。 int thirdMax(vector<int>& nums) { set<int> s; for (int num : nums) { s.insert(num); if (s.size() > 3) { s.erase(s.begin()); } } return s.size() == 3 ? *s.begin() : *s.rbegin(); };

遍历数组,同时用一个有序集合来维护数组中前三大的数。具体做法是每遍历一个数,就将其插入有序集合,若有序集合的大小超过 3,就删除集合中的最小元素。这样可以保证有序集合的大小至多为 3,且遍历结束后,若有序集合的大小为 3,其最小值就是数组中第三大的数;若有序集合的大小不足 3,那么就返回有序集合中的最大值。

class Solution { public: int thirdMax(vector<int>& nums) { // set 会自动去重 + 升序排序 set<int> s; for (int num : nums) { s.insert(num); // 正确插入元素 } // 迭代器指向 set 起始位置 auto it = s.begin(); // 元素个数 >=3:返回第 3 大的数(set升序,倒数第3个) if (s.size() >= 3) { // 移动到倒数第 3 个元素 for (int i = 0; i < s.size() - 3; ++i) { it++; } } // 元素不足 3 个:返回最大值(最后一个元素) else { it = prev(s.end()); } return *it; // 返回迭代器指向的值 } };

3.一次遍历

遍历数组,并用三个变量 a、b 和 c 来维护数组中的最大值、次大值和第三大值,以模拟方法二中的插入和删除操作。为方便编程实现,我们将其均初始化为小于数组最小值的元素,视作「无穷小」,比如 −2 63 等。

class Solution { public: int thirdMax(vector<int> &nums) { long a = LONG_MIN, b = LONG_MIN, c = LONG_MIN; for (long num : nums) { if (num > a) { c = b; b = a; a = num; } else if (a > num && num > b) { c = b; b = num; } else if (b > num && num > c) { c = num; } } return c == LONG_MIN ? a : c; } };
http://www.jsqmd.com/news/605529/

相关文章:

  • java架构一/1:微服务电商/地基/登录
  • OpenClaw浏览器控制:Qwen3.5-9B自动填写复杂Web表单
  • 2026年4月严苛环境靠谱氢气发电机厂家推荐:24小时发电机出租、UPS不间断电源租赁、临时发电机出租、乙醇发电机组选择指南 - 优质品牌商家
  • Tinycon终极指南:如何在网站favicon上优雅显示通知气泡的完整教程
  • Z-Image-Turbo_Sugar脸部Lora入门必看:从Xinference启动到Gradio出图完整流程
  • 蓝桥杯备赛:Day8-小苯的异或和
  • 2026年单玻隔断厂家排行:甘肃成品隔断、甘肃活动隔断、甘肃玻璃隔墙、甘肃玻璃隔断、甘肃百叶隔断、甘肃移动隔断选择指南 - 优质品牌商家
  • Qwen3.5-9B垂直场景:制造业BOM表解析+工艺图识别+故障推演
  • 二叉树(C语言)
  • 从零开始构建嵌入式安全:OP-TEE可信执行环境实战指南
  • Creo混合与扫描混合实战:从基础到高级建模技巧
  • 跨平台文件同步:OpenClaw调用Gemma-3-12b-it智能分类备份方案
  • IHaskell实战案例:利用梯度下降算法解决实际优化问题的完整演示
  • AI 设计模式 04:多智能体协作模式 —— 给 AI 组个团队,干活比你公司的人还利索
  • 光电对抗:激光与激光雷达成像探测制导及电子对抗(2)
  • OpenClaw版本升级:无缝迁移Kimi-VL-A3B-Thinking配置到新版本
  • Qwen3-Reranker-0.6B镜像部署:开箱即用的RAG重排序服务容器化方案
  • GDScriptDecomp源码编译指南:从零构建自定义逆向工程工具
  • 从H.264到AV1:主流视频编码标准的演进、选型与实战场景剖析
  • 正则表达式基础
  • Phi-4-mini-reasoning教程:用HuggingFace pipelines封装标准化推理流水线
  • 光电对抗:激光与激光雷达成像探测制导及电子对抗(3)
  • 链表(两数相加)(1)
  • OpenClaw二次开发入门:Phi-3-mini-128k-instruct模型适配改造
  • Python脚本打包成.exe方法
  • RTX4090D显存优化:Qwen3-32B-Chat镜像并发处理OpenClaw任务实测
  • 基于单片机的的公交车报站系统(有完整资料)
  • Ostrakon-VL-8B商业应用:赋能区域督导远程巡店,替代80%人工拍照核查
  • LabVIEW调用HTTPS接口的保姆级教程:从抓取CA证书到GET请求一气呵成
  • Simufact.Forming工艺链仿真实战:从冷成型到热处理的完整流程配置技巧