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

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

求窗口的最大值 

#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

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

相关文章:

  • GoWeb开发(基础)
  • JavaWeb入门与进阶:从基础概念到热门框架全解析
  • 智能网联汽车 “中央计算” 博弈:RTOS 与跨域融合的算力分配挑战
  • Dive into LVGL (1) —— How LVGL works from top to down
  • 安装docker
  • RabittMQ-高级特性2-应用问题
  • 深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
  • 【论文解读】| ACL2024 | LANDeRMT:基于语言感知神经元路由的大模型机器翻译微调框架
  • Kafka单机版安装部署
  • Docker下Gogs设置Webhook推送Spug,踩坑记录与解决方案
  • 机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据
  • 广东省省考备考(第六天5.9)—言语:逻辑填空(每日一练)
  • 初识C++:入门基础(二)
  • 香港科技大学(广州)新开设智能制造理学硕士学位项目2025年9月入学机会
  • 可信数据空间:标准体系建设指南及空间能力要求
  • 【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别
  • Spring AI 系列——使用大模型对文本内容分类归纳并标签化输出
  • python---kafka常规使用
  • nginx的学习笔记
  • shopping mall(document)
  • 重庆荣昌出圈背后:把网络流量变成经济发展的增量
  • 碧桂园:砸锅卖铁保交房、持续推进保主体,尽快让公司恢复正常经营
  • 警方通报男子地铁上拍视频致乘客恐慌受伤:列车运行一度延误,已行拘
  • 悬疑推理联合书单|虫神山事件
  • 欧洲承诺投资6亿欧元吸引外国科学家
  • 上海推动AI+文旅深度融合,MaaS平台和产业基地落地徐汇