优先队列(priority_queue)
我之前博客中有队列相关的知识点但是不完全其中有简单队列也有单调队列现在我们着重看一下优先队列优先队列一般有两种用法---大根堆和小根堆一般用于求第k大/第k小的数或者贪心类问题priority_queueint qp; //大根堆先出大数 priority_queueint,vectorint,greaterint qp; //小根堆先出小数而优先队列的常用操作与栈相似都归结如下q.push(x); // 插入元素 q.top(); // 获取堆顶元素最大/最小 q.pop(); // 删除堆顶 q.empty(); // 判断空 q.size(); // 元素数量用优先队列时我们要注意当队列为空时不能用top/pop否则程序会崩溃。下面我们看几道比较经典的例题给你一个长度为n的整数数组score其中score[i]是第i位运动员在比赛中的得分。所有得分都互不相同。运动员将根据得分决定名次其中名次第1的运动员得分最高名次第2的运动员得分第2高依此类推。运动员的名次决定了他们的获奖情况名次第1的运动员获金牌Gold Medal。名次第2的运动员获银牌Silver Medal。名次第3的运动员获铜牌Bronze Medal。从名次第4到第n的运动员只能获得他们的名次编号即名次第x的运动员获得编号x。使用长度为n的数组answer返回获奖其中answer[i]是第i位运动员的获奖情况。示例 1输入score [5,4,3,2,1]输出[Gold Medal,Silver Medal,Bronze Medal,4,5]解释名次为 [1st, 2nd, 3rd, 4th, 5th] 。这道题我们可以用优先队列与pair结合用pair存储下标与成绩队列顶部一定为目前最大值代码class Solution { public: vectorstring findRelativeRanks(vectorint score) { int nscore.size(); priority_queuepairint,intq; for(int i0;in;i){ q.emplace(score[i],i); } vectorstring ans(n); int k1; while(!q.empty()){ auto [s,idx]q.top();//大根堆q的最大值存入S,对应下标存入idx; q.pop(); if(k1) ans[idx]Gold Medal; else if(k2) ans[idx]Silver Medal; else if(k3) ans[idx]Bronze Medal; else ans[idx]to_string(k); k; } return ans; } };数据流中的第k大元素设计一个找到数据流中第k大元素的类class。注意是排序后的第k大元素不是第k个不同的元素。请实现KthLargest类KthLargest(int k, int[] nums)使用整数k和整数流nums初始化对象。int add(int val)将val插入数据流nums后返回当前数据流中第k大的元素。示例 1输入[KthLargest, add, add, add, add, add][[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]输出[null, 4, 5, 5, 8, 8]解释KthLargest kthLargest new KthLargest(3, [4, 5, 8, 2]);kthLargest.add(3); // 返回 4kthLargest.add(5); // 返回 5kthLargest.add(10); // 返回 5kthLargest.add(9); // 返回 8kthLargest.add(4); // 返回 8这道题我们就用小根堆当堆里面有k个元素时堆顶就是第k大元素代码class KthLargest { private: int k; priority_queueint, vectorint, greaterint minHeap; // 小根堆 public: KthLargest(int k, vectorint nums) { this-k k; for (int num : nums) { add(num); // 复用add逻辑初始化堆 } } int add(int val) { if (minHeap.size() k) { minHeap.push(val); } else if (val minHeap.top()) { minHeap.pop(); minHeap.push(val); } return minHeap.top(); // 堆顶就是第k大元素 } }; /** * Your KthLargest object will be instantiated and called as such: * KthLargest* obj new KthLargest(k, nums); * int param_1 obj-add(val); */

相关新闻

Ubuntu系统Python多版本管理:源码编译安装与虚拟环境配置指南

Ubuntu系统Python多版本管理:源码编译安装与虚拟环境配置指南

1. 项目概述:为什么需要手动管理Python版本?在Ubuntu上搞开发,尤其是涉及机器学习、Web后端或者系统运维,你迟早会遇到一个经典难题:系统自带的Python版本不是你想要的。Ubuntu 22.04 LTS默认带Python 3.10&#xff0c…

2026/7/30 7:06:48阅读更多 →
Java多线程面试核心:从并发三要素到JUC实战与调优

Java多线程面试核心:从并发三要素到JUC实战与调优

1. 项目概述:为什么多线程面试题总是“送命题”?干了这么多年Java开发,也面过不少人,我发现一个挺有意思的现象:但凡面试官问到多线程,候选人的表情十有八九会变得凝重。从基础的Thread和Runnable&#xff…

2026/7/30 7:04:48阅读更多 →
如何通过Python高效采集小红书公开数据:从技术痛点到完整解决方案

如何通过Python高效采集小红书公开数据:从技术痛点到完整解决方案

如何通过Python高效采集小红书公开数据:从技术痛点到完整解决方案 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在小红书数据采集领域,开发者面临的…

2026/7/30 7:04:48阅读更多 →
混合办公下企业IM的安全边界重构

混合办公下企业IM的安全边界重构

混合办公常态化,企业即时通讯如何重构安全边界与合规框架 当一名金融机构的交易员在机场候机厅通过手机审批内部指令,当三甲医院的科室主任在家中用平板查阅患者会诊消息,当政务单位的项目负责人出差途中在笔记本电脑上同步涉密文件——这些看…

2026/7/30 14:15:01阅读更多 →
5分钟快速上手:用Ryujinx在电脑上畅玩Switch游戏

5分钟快速上手:用Ryujinx在电脑上畅玩Switch游戏

5分钟快速上手:用Ryujinx在电脑上畅玩Switch游戏 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验《塞尔达传说:王国之泪》的史诗冒险&#xff0c…

2026/7/30 14:15:01阅读更多 →
Argo CD Webhook 完全指南:从原理到实战,实现 Git 变更即时同步

Argo CD Webhook 完全指南:从原理到实战,实现 Git 变更即时同步

Argo CD Webhook 完全指南:从原理到实战,实现 Git 变更即时同步默认情况下,Argo CD 每隔几分钟才会轮询一次 Git 仓库。对于追求快速交付的团队来说,这 3 分钟的延迟实在太久了。Argo CD Webhook 正是解决这个痛点的利器——让 Gi…

2026/7/30 14:15:01阅读更多 →
Argo CD App of Apps 模式深度解析:像管理应用一样管理应用

Argo CD App of Apps 模式深度解析:像管理应用一样管理应用

Argo CD App of Apps 模式深度解析:像管理应用一样管理应用当你用 Argo CD 部署第一个应用时,一切都简单美好。但当你需要管理几十上百个应用、实现一键自举整个集群,或者让团队自助创建部署环境时,手动一个个创建 Application 就…

2026/7/30 14:15:01阅读更多 →
AutoUnipus:3分钟完成U校园学习的终极免费指南

AutoUnipus:3分钟完成U校园学习的终极免费指南

AutoUnipus:3分钟完成U校园学习的终极免费指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 还在为U校园平台繁重的网课任务感到压力吗?每天花费数小时…

2026/7/30 14:15:01阅读更多 →
如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南

如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南

如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否还记得十年前在QQ空间写下的第一条说说?那些…

2026/7/30 14:13:01阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →