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

代码随想录 栈与队列 test 6

239. 滑动窗口最大值 - 力扣(LeetCode)

每次只取窗口中最大值,这个最大值可能在后面的滑动中保持不变,而比最大值小的值且在最大值之前出现的值没必要保留,因此可以通过单调队列利用这个特性。

这个单调队列具有如下性质:

1.队头始终为当前队列的最大值

2.队列具有单调性,队尾为最小值

因此,用三个函数实现题目要求。

pop(),检查当前滑动窗口最后一个元素是否为单调队列的队头,若不是则不用管,这说明该元素不是当前单调队列的最大值,在这之前就已经被丢出单调队列中。

push(),将当前滑动窗口的第一个元素加入单调队列中,把队列中小于该元素的值全部丢出队列。

getmax(),单调队列的队头即为最大值。

class Solution {
private:class MyQueue{public:deque<int> queue;void pop(int num){if(!queue.empty() && num == queue.front())queue.pop_front();}void push(int num){while(!queue.empty() && num > queue.back()){queue.pop_back();}queue.push_back(num);}int getMax(){return queue.front();}};
public:MyQueue queue;vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;for(int i = 0; i < k; i++){queue.push(nums[i]);}res.push_back(queue.getMax());for(int i = k; i < nums.size(); i++){queue.pop(nums[i - k]);queue.push(nums[i]);res.push_back(queue.getMax());}return res;}
};

http://www.lryc.cn/news/525652.html

相关文章:

  • 动手学深度学习2025.1.23
  • 生存网络与mlr3proba
  • C#与AI的共同发展
  • 2000-2020年各省第二产业增加值数据
  • 【MySQL】 库的操作
  • docker 启动镜像命令集合
  • 微信小程序获取位置服务
  • Docker Load后存储的镜像及更改镜像存储目录的方法
  • Langchain本地知识库部署
  • java基础学习——jdbc基础知识详细介绍
  • 联想电脑怎么设置u盘启动_联想电脑设置u盘启动方法(支持新旧机型)
  • C# 解析 HTML 实战指南
  • 光谱相机在智能冰箱的应用原理与优势
  • 编写0号中断的处理程序
  • “““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
  • 群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].
  • 使用 C++ 在深度学习中的应用:如何通过 C++20 构建高效神经网络
  • 当 Facebook 窥探隐私:用户的数字权利如何捍卫?
  • Spring MVC中HandlerInterceptor和Filter的区别
  • Android多语言开发自动化生成工具
  • 回首2024,展望2025
  • Android SystemUI——快捷面板的显示(十五)
  • 放弃使用Dockerfiles 平替 docker init
  • 前端jquery 实现文本框输入出现自动补全提示功能
  • vulfocus/fastjson-cnvd_2017_02833复现
  • 华为支付接入规范
  • MySQL训练营-慢查询诊断问题
  • 如何给自己的域名配置免费的HTTPS How to configure free HTTPS for your domain name
  • .Net Core微服务入门全纪录(六)——EventBus-事件总线
  • 1/20赛后总结