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

LeetCode HOT100 - 滑动窗口最大值

滑动窗口移动的过程就是不断有元素进/出的过程

要维护这个过程中现有元素的最大值

那最基础的就是维护一个元素有没有出现

但是一个窗口中可能有多个相同元素,因此再加上元素的出现次数

因此一个数组来维护出现次数,一个优先队列来维护现有元素

每次移动同步对元素进行更新维护

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& a, int k) {unordered_map<int, int> cnt;priority_queue<int, vector<int>> pq;for (int i = 0; i < k; i++) {cnt[a[i]]++;if (cnt[a[i]] == 1) {pq.push(a[i]);}}int n = a.size();vector<int> ans;ans.emplace_back(pq.top());for (int l = 0, r = k; r < n; l++, r++) {cnt[a[l]]--;cnt[a[r]]++;if (cnt[a[r]] == 1) {pq.emplace(a[r]);}while (!pq.empty() && cnt[pq.top()] == 0) {pq.pop();}ans.emplace_back(pq.top());}return ans;}
};
http://www.jsqmd.com/news/609935/

相关文章:

  • 九齐NY8B062F 定时器0 中断函数配置
  • 【Agent面试题大揭秘】50道高频题深度解析,助你拿下Offer!
  • 从光栅条纹到三维点云:MATLAB实现多频外差相位展开全流程
  • AI辅助论文引用生成的六种智能文献管理策略解析
  • 虚拟磁链在直接功率控制Simulink仿真中的应用及其整流器、逆变器仿真 —— 基于vf-dp...
  • Mask2Former的‘掩码注意力’到底强在哪?手把手带你用PyTorch实现核心模块
  • 2026.4.8总结
  • CANoe Log 在线回放实操指南
  • 大模型之Linux服务器部署大模型斜
  • OpenCV小项目(2)——人脸识别打卡
  • 从拉普拉斯变换到凯莱-哈密顿:矩阵指数函数计算方法的“前世今生”与选择指南
  • 为什么你的架构设计总被老板驳回?GB/T 8567 标准解读
  • C语言学习的第一周
  • Vue3项目中iframe通信实战:手把手教你实现跨项目消息传递
  • 机器学习笔记(9): L-smooth 假设
  • 显式 + 隐式特征交叉融合模型
  • Linux:入门开发工具--Git和GDB调试器
  • 电力电子Matlab/Simulink仿真:模块化多电平变换器(MMC)及其控制策略
  • 六种基于AI技术的文献引用生成方案及其在智能管理中的应用分析
  • 从TLS握手到指纹识别:用Wireshark分析Python爬虫的JA3特征
  • 天地图开发实战:批量添加和删除节点的完整代码示例(附效果图)
  • 基于Cruise 2019版及Matlab 2018a的燃料电池功率跟随仿真模型及控制模型搭建
  • 利用AI优化论文引用的六种智能文献管理方法详解
  • 电子系统中电气隔离(Galvanic Isolation)的实现技术与应用场景解析
  • 用Python手把手教你解四皇后问题:从暴力破解到回溯算法的保姆级实现
  • 忍者像素绘卷应用场景:微信小程序‘火影知识问答’+像素答案卡片生成
  • 高薪招聘!13-40K!AI大模型应用工程师,带你玩转AI前沿技术!
  • Linux-Shell算术运算
  • FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!盒
  • (论文速读)基于信号-图像映射和深度Gabor卷积自适应池化网络的旋转机械智能故障诊断方法