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

leetcode 239. 滑动窗口最大值

题目如下
在这里插入图片描述

数据范围
在这里插入图片描述

观察数据范围如果枚举所有的窗口再求他们的最大值肯定是超时。
那么我们可以按照定长滑动窗口的思路:用一个长度为k的窗口从前往后直到最后面。
显然这样做只需要维护最大值就行,那么什么样的数据结构可以自动帮我们维护最大值呢?
显然是优先队列(大根堆)同时我们还需要存储每个数字对应的下标,当根上面的数的下标
落在滑动窗口内的时候把这个数送入答案,否则在while循环中删除到这个位置的值在滑动窗口为止。

通过代码

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        int n = nums.size();
        if(n == 1)return nums;
        vector<int> ans;
         priority_queue<pair<int, int>> q;
         for(int i = 0;i < k;i++){
            q.emplace(nums[i],i);
         }
         ans.push_back(q.top().first);
         for(int i = k;i < n;i++){
            q.emplace(nums[i],i);
            while(q.top().second <= i - k)q.pop();
            ans.push_back(q.top().first);
         }
            return ans;
        }
    
};

在这里插入图片描述


http://www.kler.cn/a/566596.html

相关文章:

  • 爱普生汽车用显示控制器IC:ScalerIC,汽车接口IC,相机接口IC
  • DeepSeek R1满血+火山引擎详细教程
  • Android用ExoPlayer获取视频正确的尺寸
  • ds回答-开源llm应用开发平台
  • 内容中台是什么?内容管理平台解析
  • 【Excel】 Power Query抓取多页数据导入到Excel
  • RabbitMQ 高级配置与优化:从入门到精通
  • macos uni-app 如何生成安卓APP的公钥和签名
  • Python设置阿里云镜像源教程:解决PIP安装依赖包下载速度慢的问题
  • 【2】VS Code 新建上位机项目---C#面向对象编程
  • el-tree实现双击树节点事件
  • 【官方配图】win10/win11 安装cuda 和 cudnn
  • 【大模型】大模型推理能力深度剖析:从通用模型到专业优化
  • GPT-4.5震撼登场,AI世界再掀波澜!
  • leetcode257-二叉树的所有路径
  • 穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路
  • 信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效
  • vllm源码解析(一):整体架构与推理代码
  • IDEA - 查看类的继承结构(通过快捷键查看、通过生成类图查看)
  • Git -版本管理工具 -常用API整理