LeetCode 3885.设计事件管理器
给你一组初始事件列表其中每个事件有一个唯一的 eventId 和一个 priority优先级。实现 EventManager 类EventManager(int[][] events) 使用给定事件初始化管理器其中 events[i] [eventIdi, priorityi]。void updatePriority(int eventId, int newPriority) 更新具有 id 为 eventId 的 活跃 事件的优先级为 newPriority。int pollHighest() 移除并返回具有 最高优先级 的 活跃事件 的 eventId。如果有多个活动事件具有相同的优先级则返回 eventId 最小的事件。如果没有活跃事件则返回 -1。如果一个事件没有被 pollHighest() 移除则称其为 活跃事件。示例 1输入[“EventManager”, “pollHighest”, “updatePriority”, “pollHighest”, “pollHighest”][[[[5, 7], [2, 7], [9, 4]]], [], [9, 7], [], []]输出[null, 2, null, 5, 9]解释EventManager eventManager new EventManager([[5,7], [2,7], [9,4]]); // 使用三个事件初始化管理器eventManager.pollHighest(); // 两个事件 5 和 2 的优先级均为 7因此返回 id 最小的事件 2eventManager.updatePriority(9, 7); // 将事件 9 的优先级更新为 7eventManager.pollHighest(); // 剩下的优先级最高的事件是 5 和 9返回 5eventManager.pollHighest(); // 返回 9示例 2输入[“EventManager”, “pollHighest”, “pollHighest”, “pollHighest”][[[[4, 1], [7, 2]]], [], [], []]输出[null, 7, 4, -1]解释EventManager eventManager new EventManager([[4,1], [7,2]]); // 使用两个事件初始化管理器eventManager.pollHighest(); // 返回 7eventManager.pollHighest(); // 返回 4eventManager.pollHighest(); // 没有剩余事件返回 -1提示1 events.length 105^55events[i] [eventId, priority]1 eventId 109^991 priority 109^99events 中的所有 eventId 值都是 唯一的 。1 newPriority 109^99对每次调用 updatePriorityeventId 都指向一个 活跃事件。对 updatePriority 和 pollHighest 的总调用次数最多为 105^55次。懒删除堆我们可以维护一个优先级和事件id的最大堆以及一个事件Id到优先级的哈希表。每次updatePriority时先修改哈希表然后不删除堆中当前事件id的优先级而是插入一个新的正确节点进堆每次pollHighest时检查当前堆顶事件id的优先级是否是哈希表中存放的优先级如果是就找到了优先级最高的事件否则堆顶就是失效的事件classEventManager{public:EventManager(vectorvectorintevents){for(vectorintevent:events){eventToPriority[event[0]]event[1];heap.push_back({event[1],-event[0]});}make_heap(heap.begin(),heap.end());}voidupdatePriority(inteventId,intnewPriority){eventToPriority[eventId]newPriority;heap.push_back({newPriority,-eventId});push_heap(heap.begin(),heap.end());}intpollHighest(){while(!heap.empty()(eventToPriority.find(-heap[0][1])eventToPriority.end()||heap[0][0]!eventToPriority[-heap[0][1]])){pop_heap(heap.begin(),heap.end());heap.pop_back();}if(heap.empty()){return-1;}intans-heap[0][1];pop_heap(heap.begin(),heap.end());heap.pop_back();eventToPriority.erase(ans);returnans;}private:unordered_mapint,inteventToPriority;vectorvectorintheap;};/** * Your EventManager object will be instantiated and called as such: * EventManager* obj new EventManager(events); * obj-updatePriority(eventId,newPriority); * int param_2 obj-pollHighest(); */时间复杂度初始化O(n)其中 n 是 events 的长度。updatePriorityO(log(nq))其中 q 是 updatePriority 的调用次数。pollHighest均摊 O(log(nq))。每个元素至多入堆出堆各一次。空间复杂度O(nq)。

相关新闻

每天认识一种投资品类:牛熊证

每天认识一种投资品类:牛熊证

文章目录1.先从一个情景开始2.牛熊证是什么?2.1 简介2.2 合约条款2.3 发行商信用风险3.牛熊证与窝轮的相似之处4.牛熊证与窝轮的核心区别5.打靶:强制收回机制6.牛熊证的杠杆效应7.牛熊证的类型8.牛熊证适合什么样的人?9.投资牛熊证的关键原则…

2026/8/16 3:37:03 阅读更多 →
Obsidian LaTeX公式高效输入:插件配置与实战技巧

Obsidian LaTeX公式高效输入:插件配置与实战技巧

1. 项目概述:为什么说Obsidian写LaTeX公式能比手写快?如果你经常需要处理数学、物理、计算机科学或者任何涉及复杂公式的笔记,那你一定对LaTeX不陌生。它排版出来的公式确实漂亮、专业,但传统的编写流程——打开一个专门的LaTeX编…

2026/8/16 3:37:03 阅读更多 →
VAM雕刻变形全攻略:从基础操作到高级技巧

VAM雕刻变形全攻略:从基础操作到高级技巧

1. 先搞清楚“雕刻变形”在VAM里到底能做什么如果你在VAM(Virt-A-Mate)里捏人或者调整场景时,觉得默认的滑块调节不够精细,或者想做出一些夸张、独特的角色形态,那“雕刻变形”这个功能就是你绕不开的工具。它解决的核…

2026/8/17 4:20:05 阅读更多 →

最新新闻

HTML打包EXE实战指南:从Electron到轻量方案的选择与优化

HTML打包EXE实战指南:从Electron到轻量方案的选择与优化

1. 从网页到桌面应用:为什么要把HTML打包成EXE?你可能已经用HTML、CSS和JavaScript写了一个很酷的工具,比如一个本地数据处理器、一个个人记账本,或者一个给客户演示用的交互原型。它运行在浏览器里,一切看起来都很美好…

2026/8/17 6:05:10 阅读更多 →
AI编码助手配置:从临时指导到持久护栏与技能管理

AI编码助手配置:从临时指导到持久护栏与技能管理

1. 项目概述:当AI编码助手需要“护栏”而非“指南”最近在折腾各种AI编码助手(比如Cursor、Claude Code、Codex)时,我总被一个问题困扰:如何让这玩意儿更“听话”、更“懂我”?我可能在一个项目里要求所有函…

2026/8/17 6:05:10 阅读更多 →
灰色预测GM(1,1)模型:小样本数据预测的数学推导与实战应用

灰色预测GM(1,1)模型:小样本数据预测的数学推导与实战应用

1. 从直觉到公式:为什么我们需要灰色预测?做预测,尤其是面对数据量少、信息不完全的场景,是很多数据分析师和工程师的日常头疼事。你可能遇到过这种情况:手头只有过去几年的销量数据,老板却要你预测未来三年…

2026/8/17 6:05:10 阅读更多 →
运筹学在游戏排刀中的应用:整数规划建模与求解实践

运筹学在游戏排刀中的应用:整数规划建模与求解实践

1. 项目概述:当游戏攻略遇上运筹学如果你是一位《公主连结Re:Dive》的公会战管理员,或者对“排刀”这个听起来有点黑话的词感到头疼,那么这篇内容可能正是你需要的。不过,我得先泼一盆冷水:这篇攻略,对于只…

2026/8/17 6:05:10 阅读更多 →
均热板散热技术解析:原理、适用场景与选购指南

均热板散热技术解析:原理、适用场景与选购指南

上周帮朋友装机,选散热器时他盯着商品详情页里的“均热板”三个字问我:“这东西是不是智商税?我看有人说它没用。”我愣了一下。不是因为他问得奇怪,而是因为这个问题背后,恰好藏着很多人对散热技术的一个典型误解&…

2026/8/17 6:05:10 阅读更多 →
基于系统1与系统2理论的AI对话引擎:构建自适应决策支持助手

基于系统1与系统2理论的AI对话引擎:构建自适应决策支持助手

1. 项目概述:当对话式AI开始“双核思考”最近在做一个挺有意思的项目,叫Reflecti-Mate。简单来说,它是一个能跟你聊天、帮你做决策的智能助手。但和市面上那些只会检索信息或者按固定流程回答的聊天机器人不同,Reflecti-Mate的核心…

2026/8/17 6:04:09 阅读更多 →

日新闻

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

2026/8/17 0:00:08 阅读更多 →
LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:00:08 阅读更多 →
飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/17 0:00:08 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →