滑动窗口: 一般使用双指针算法,左指针l和右指针r之间的空间称为窗口,由于指针是不断移动的,从而窗口也可以移动,称为滑动窗口。

滑动窗口的最值: 由于窗口是移动的,移动的过程中有新元素的加入也有旧元素的弹出。每一次元素的加入或弹出都可能使窗口中元素的最值发生变化,也正是会发生变化,使得无法直接获取任意时刻滑动窗口的最值。

单调队列求滑动窗口最值: 虽然滑动窗口中不断有新元素加入和旧元素弹出,但是始终都有一个特点就是新元素都是从右指针r处加入的,旧元素都是从左指针l处弹出的。当一个元素如果是当前窗口的最大值,则它前面的值就不需要保存,因为只要它在窗口中,最值就不会变成其他的值,而对于它后面的比它小的元素则要保存,因为它一点弹出,最大值就要发生变化,需要保存后面的比它小的值。类似可推最小值。

双端队列: 使用双端队列,维持队列是一个单调队列(最大值: 单调递增队列,最小值: 单调递减队列),每次最值就是双端队列的front

// LeetCode 1438. 绝对差不超过限制的最长连续子数组deque<int> maxx;
deque<int> minn;while(r < sz){while (!maxx.empty() && nums[r] > maxx.back()) maxx.pop_back();while (!minn.empty() && nums[r] < minn.back()) minn.pop_back();maxx.push_back(nums[r]);minn.push_back(nums[r]);while(l < r && abs(maxx.front() - minn.front()) > limit){if (nums[l] == maxx.front()) maxx.pop_front();if (nums[l] == minn.front()) minn.pop_front();l ++;}if (abs(maxx.front() - minn.front()) <= limit){ans = max(ans, r - l + 1);}++r;
}

求滑动窗口中的最大值和最小值相关推荐

  1. 单调队列板子:求滑动窗口中最大值和最小值

    文章目录 题目分析 初始思路 单调队列优化的思路 代码1:数组模拟单调队列的代码 代码2:deque容器实现 能用到单调队列的情景比较有限: 1.典型的有滑动窗口的最值, 2.找到里它最近的比它大(小 ...

  2. pandas计算滑动窗口中的最大值实战(Rolling Maximum in a Pandas Column):计算单数据列滑动窗口中的最大值、计算多数据列滑动窗口中的最大值

    pandas计算滑动窗口中的最大值实战(Rolling Maximum in a Pandas Column):计算单数据列滑动窗口中的最大值.计算多数据列滑动窗口中的最大值 目录

  3. 6-4 求一组数中的最大值、最小值和平均值

    6-4 求一组数中的最大值.最小值和平均值 编写函数,求一组数中的最大值.最小值和平均值. 函数接口定义: float fun(int a[],int n,int *max,int *min); 其中 ...

  4. 求一组数中的最大值和最小值

    Description 给定一组数,求它们中的最大值和最小值. Input 首先是一个整数n,表示这组数据的个数. 然后是n个整数,中间用空格分隔. Output 输出最大值和最小值,中间用" ...

  5. 求一组数中的最大值、最小值及总和

    题目内容: 求一组数中的最大值.最小值及总和.要求定义函数 int f(int a[],int n,int *pmax,int *pmin) 函数返回总和,并分别通过指针pmax 和 pmin将最大值 ...

  6. 6-7 求一组数中的最大值、最小值和平均值 (10 分)

    编写函数,求一组数中的最大值.最小值和平均值. 函数接口定义: float fun(int a[],int n,int *max,int *min); 其中 a.n.max 和 min 都是用户传入的 ...

  7. 【剑指offer】_19 滑动窗口中的最大值

    题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6 ...

  8. 汇编语言求一组数中的最大值,最小值和总和(以10个数为例)

    c语言简单实现: int a[10]={3,6,5,4,2,9,8,0,1,2} int max,min,total=a[0]; int n=9; int i=0; do{i++;total=tota ...

  9. python求五个数中的最大值和最小值_python编程 求输入的10个数中的最大值和最小值,并输出它们各自是第几个...

    展开全部 importjava.util.ArrayList:e68a84e8a2ad3231313335323631343130323136353331333431373266 importjava ...

最新文章

  1. python页面跳转中_python web页面跳转
  2. js原生方法传参的细节(面试必问)
  3. php把时间戳转换成字符串,php中将时间差转换为字符串提示的实现代码
  4. 【渝粤教育】广东开放大学 标准化理论与方法 形成性考核 (53)
  5. Django复习:视图和模版
  6. c# 实现查找mysql安装路径
  7. 一个奇怪的DNS服务器故障
  8. oracle中文转全拼音,(转)oracle下,把中文转为拼音函数编写
  9. 正规word文档文件字体排版格式要求(标准)
  10. 计算机绘图尺寸标注,计算机绘图AutoCAD尺寸标注演示教学.ppt
  11. S3C64xx设备树支持
  12. 华为无线网卡无服务器,联通华为无线上网卡连接时连接被终止解决方法 - 小众知识...
  13. 地产大佬潘石屹宣布入坑Python,这是要来抢我们的饭碗了吗?
  14. C语言编程 犯二的程度,犯二的程度 - osc_jhl7rojx的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. git 出现 Author identity unknown 问题一
  16. rabbitmq 默认用户和密码
  17. 003_创建simulink文件
  18. 超火爆的人类一败涂地Human Fall Flat Mac中文版(支持m1)
  19. 凛冬至送温暖,无价资源免费送
  20. 说说打印样式CSS的技巧和要点

热门文章

  1. 错误记录:java.lang.IllegalStateException:Duplicate key
  2. 如何设置通知区域图标不显示?
  3. python 批量图片局部高斯模糊(图片水印处理)
  4. 处理ArchLinux上各软件屏幕卡顿与显示问题(chrome浏览器,微信开发者工具wxdt,vscode移动慢问题)
  5. lftp命令使用 操作系统(Windows、Linux) PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 - powered by phpwhy.com
  6. 夜宿祝国寺(文:元哲)
  7. window.name属性详解(Javascript)
  8. django踩坑关于django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
  9. 长春理工大学成人高考大专报名条件
  10. Espresso:自定义Idling Resource