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

滑动窗口-窗口中的最大/小值-单调队列

求窗口的最大值 

#include <iostream>

//滑动窗口最大值用单调队列q[],q存储候选最大值的下标

//队列头是最大值的下标

using namespace std;

const int N=100010;

int nums[N],q[N];

int hh=0,tt=-1;// hh 是队头指针,tt 是队尾指针,初始为空队列

int main(){

    int n,k;

    cin>>n>>k;

    for(int i=0;i<n;i++){

    cin>>nums[i];

   

    if(hh<=tt&&q[hh]<i-k+1) hh++;

//先判断不是空队列,如果队列头在滑动窗口左侧,hh往右移动

    while(hh<=tt&&nums[q[tt]] < nums[i]) tt--;

    //判断队列尾部的数值,如果新加入的都大于队尾数值,那么去掉队尾

    //新来的数会“打掉”比它小的所有队尾

    q[++tt]=i;//把当前下标i加入队尾

    if(i>=k-1) cout<<nums[q[hh]]<<' ';//i必须滑动完第一个窗口,开始输出nums[q[hh]]

}  return 0;

}

滑动窗口最小值

队列头部是最小的,递增

 只改一个地方

while (hh <= tt && nums[q[tt]] > nums[i]) tt--;

nums[i] 都小于队列尾的数字,赶紧去掉tt

如果队尾比当前值大,不对了!弹出去

http://www.xdnf.cn/news/4986.html

相关文章:

  • 强化学习三大基本方法-DP、MC、TD
  • 英文单词词根记忆法:后缀 ology, onomy, graphy词根有哪些单词
  • websocketd 10秒教程
  • 力扣热题——到达最后一个房间的最少时间 II
  • QML 图像变换(缩放、平移、旋转)
  • 【RLHF】 Reward Model 和 Critic Model 在 RLHF 中的作用
  • AD新版本Skill的使用
  • SecureCRT网络穿透/代理
  • Python毕业设计219—基于python+Django+vue的房屋租赁系统(源代码+数据库+万字论文)
  • 主题分析建模用法介绍
  • RocketMQ 深度解析:架构设计与最佳实践
  • JavaScript 模块系统全景解析
  • 【数据机构】2. 线性表之“顺序表”
  • Qt读写XML文档
  • uniapp-商城-46-创建schema并新增到数据库
  • 浅聊大模型-有条件的文本生成
  • RAIL-KD: 随机中间层映射知识蒸馏
  • uniapp 不同路由之间的区别
  • LVGL9保姆级教程(源码获取)
  • HarmonyOS学习——ArkTS语法介绍之基本知识
  • 代理ARP与传统ARP在网络通信中的应用及区别研究
  • 2025数维杯数学建模A题完整限量论文:空中芭蕾——蹦床运动的力学行为分析
  • 边缘大型语言模型综述:设计、执行和应用
  • 图解gpt之神经概率语言模型与循环神经网络
  • TextRNN 模型实现微博文本情感分类
  • Python 基础语法与数据类型(六) - 条件语句、循环、循环控制
  • Android kernel日志中healthd关键词意义
  • React 第三十七节 Router 中 useOutlet Hook的使用介绍以及注意事项
  • Kubernetes Gateway API 部署详解:从入门到实战
  • 创始人IP的重塑与破局|创客匠人热点评述