滑动窗口

题目

在这里插入图片描述

思路

对于一个数组区间的最值,可以开辟一个队列记录(当然这里不能叫队列只是和队列相似,习惯性叫法)。
每个区间的最值等于队首元素。扫描数组时,如果该元素大于队尾元素(取最大值时)将该队尾元素出队,直到队尾元素大小小于该元素停止出队。将数组元素加入队尾(无论该元素是否大于队尾元素都要入队)。如果队首元素不在该区间就出队。当前队首元素就是最值。
上面的方法基于模板题题解,下面给出我的理解(以求最大值为例)。

在队列中元素都是在给定区间的。因此如果新加入的元素大于队尾元素,那么该队尾元素肯定不是当前区间和接下来区间的最大值,因为新加入的元素已经是当前区间的成员了而且新加入元素索引大于队尾元素也不会是接来下一段区间的最值。如果其值优于队尾元素,那么队尾元素肯定不是当前和接下来一段区间的最值,那么该元素就不能被输出,因此队尾元素需要出队。如果该元素是当前区间的最值,那么队列会全部出队,新的元素会成为新的队首。因此需要队列一直出队,直到队尾元素大于当前元素。
队首元素就是当前队列的最大值,因为每次添加新元素会将队尾元素出队。队首元素出队除了被新元素出队,还有一种请况就是索引不在前范围,也会被出队。
这样就动态地维护一段最值。这里使用的是deque头文件。因为传统的队列是无法队尾出队。而vector效率相对较低,因此采用deque

代码

#include<iostream>
#include<bits/stdc++.h>
#include<deque>
using namespace std;
long int a[1000000];
deque<long int> mins;
deque<long int> maxs;
int main(){int n,m;cin>>n>>m;for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++){if(i>=m&&mins.front()==a[i-m]) //如果队首元素不在范围内mins.pop_front();while(mins.size()>0&&mins.back()>a[i]){//如果队尾元素大于新元素就出队。因为这里是求的最小值。mins.pop_back();}mins.push_back(a[i]);//添加新元素if(i>=m-1){//输出队首元素cout<<mins.front();if(i<n-1)cout<<' ';}}cout<<endl;for(int i=0;i<n;i++){    //这里求的最大值,和上面相似。if(i>=m&&maxs.front()==a[i-m])maxs.pop_front();while(maxs.size()>0&&maxs.back()<a[i]){maxs.pop_back();}maxs.push_back(a[i]);if(i>=m-1){cout<<maxs.front();if(i<n-1)cout<<' ';}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509973.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024洗地机选购攻略 | 洗地机好用吗?洗地机如何挑选?

在众多清洁工具中&#xff0c;洗地机以其卓越的清洁能力和便捷的操作方式&#xff0c;获得了广泛关注。2024年&#xff0c;市场上涌现出众多品牌的洗地机&#xff0c;但哪些品牌的洗地机值得推荐呢&#xff1f;在这里&#xff0c;我们将详细探讨几个备受好评的洗地机品牌&#…

[动态规划]---part1

前言 作者&#xff1a;小蜗牛向前冲 专栏&#xff1a;小蜗牛算法之路 专栏介绍&#xff1a;"蜗牛之道&#xff0c;攀登大厂高峰&#xff0c;让我们携手学习算法。在这个专栏中&#xff0c;将涵盖动态规划、贪心算法、回溯等高阶技巧&#xff0c;不定期为你奉上基础数据结构…

宗庆后去世,钟睒睒被骂农夫与蛇

作者&#xff1a;翻篇 琥珀酒研社快评&#xff1a; 宗庆后去世后 娃哈哈销量暴涨 而农夫山泉销量暴跌 创始人钟睒睒 被网友骂成农夫与蛇 这是咋回事呢 钟睒睒没成为娃哈哈代理前 跟很多创业者一样 做啥啥不成 摆地摊不够回本 种蘑菇没有销路 就在他走投无路时 遇…

ORA-00600 [17147] patch 33093098它来了

文章目录 前言一、Opatch的更新二、集群重启 前言 书接上回&#xff1a;https://blog.csdn.net/weixin_41607523/article/details/136021914?spm1001.2014.3001.5501 针对一直报错的600 很是苦恼&#xff0c;重启了n回之后还是会在几天之后继续报错&#xff0c;为排除所有可能…

土壤数据合集:全国各省土壤类型分布矢量数据+中国土壤质地空间分布数据+中国土壤侵蚀空间分布数据

给大家分享3份土壤数据 1、全国各省土壤类型分布矢量数据 2、中国土壤质地空间分布数据 3、中国土壤侵蚀空间分布数据 #1全国各省土壤类型分布矢量数据 本数据包括两个数据集&#xff1a; &#xff08;1&#xff09;1:400万中国土壤图(2000)&#xff0c; &#xff08;2&…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image&#xff08;可在wordpress插件市场搜索下载&#xff09;&#xff0c;是一款用于本地化文章外部图片的插件&#xff0c;支持如下功能&#xff1a; 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

Xcode :Could not build module ‘WebKit‘ 已验证解决

问题&#xff1a;Could not build module WebKit 具体报错如下&#xff1a; error: type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type property (nullable, nonatomic, copy) NSArray<nw_proxy_config_…

【知识整理】Git 使用实践问题整理

问题1、fatal: refusing to merge unrelated histories 一、Git 的报错 fatal: refusing to merge unrelated histories 新建了一个仓库之后&#xff0c;把本地仓库进行关联提交、拉取的时候&#xff0c;出现了如下错误&#xff1a; fatal: master does not appear to be a g…

TikTok外贸系统的核心功能及其源代码分享!

随着全球化的不断推进&#xff0c;外贸业务成为越来越多企业的增长动力&#xff0c;TikTok作为一个全球性的社交媒体平台&#xff0c;其用户基数庞大、活跃度高&#xff0c;为外贸业务提供了无限的商机。 为了帮助企业在TikTok上更好地开展外贸业务&#xff0c;TikTok外贸系统…

2024阿里云服务器收费标准及新购1年、2年、3年、4年、5年

2024阿里云服务器优惠3月活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器…

【软考高项】【计算专题】- 5 - 进度类 - 横道图/甘特图

一、知识点 1、基本定义 甘特图(Gantt chart )又称为横道图、条状图(Bar chart)&#xff0c;通过条状图来显示项目各活动的进 度情况。以提出者亨利劳伦斯甘特( Henry Laurence Gantt)先生的名字命名。 目前许多文档工具都可以画甘特图。 &#xff08;1&#xff09;我的举例 …

Leetcode刷题-(16~20)-Java+Python+JavaScript

算法是程序员的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写算法题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就…