数据结构-单调队列

数据结构-单调队列

滑动窗口

时间复杂度O(n)

1.滑动窗口中的最大值

C++ 复制代码
deque<int> d;//数组nums[1-n],窗口大小为k
for(int i=1;i<=n;i++)
{
    while(!d.empty()&&d.front()+k<=i) d.pop_front();
 	while(!d.empty()&&nums[d.back()]<=nums[i]) d.pop_back();   
    d.push_back(i);
    if(i>=k) printf("%d",d.front());
}

2.滑动窗口中的最小值

C++ 复制代码
deque<int> d;//数组nums[1-n],窗口大小为k
for(int i=1;i<=n;i++)
{
    while(!d.empty()&&d.front()+k<=i) d.pop_front();
 	while(!d.empty()&&nums[d.back()]>=nums[i]) d.pop_back();   
    d.push_back(i);
    if(i>=k) printf("%d",d.front());
}

P1886 滑动窗口 /【模板】单调队列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

相关推荐
小小龙学IT8 分钟前
Abseil 开源 C++ 公共库深度解析:从 SwissTable 到 Status 的 Google 工程实践
c++·开源
lhldsg15 分钟前
课程排课系统实战指南:从数据库设计到算法调优全流程解析
java·数据库·算法·小程序
BSD_HY16 分钟前
薄膜开关矩阵扫描电路设计中的防鬼键措施
人工智能·算法·矩阵·人机交互·薄膜开关·源头工厂·深圳工厂
linux-hzh16 分钟前
百日算法修炼 · Day 17
数据结构·算法
XUEYUAN521218 分钟前
代理日志分析与监控:代理池健康状态巡检与分级告警体系搭建(运维实战)
运维·网络·网络协议·tcp/ip·算法·架构
兔兔兔兔121 分钟前
记录C++ 12
开发语言·c++
sel_922 分钟前
【多轮对话论文导读(七)】多轮对话论文阅读笔记:从数据生成、用户模拟到上下文重构与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·语言模型·自然语言处理
远游客071324 分钟前
为什么用「年×100+月」做比较
算法·gin
此陆昭昭31 分钟前
qt,使用qml写一个简单的界面
c++·qt
沫璃染墨1 小时前
《从零入门Linux系统篇(二十九):文件篇·二——深入文件描述符:从文件描述符表到重定向,再到Shell实现》
linux·运维·服务器·c++·驱动开发·系统架构