单调队列——求滑动窗口最值

算法相关的学习笔记与代码记录。

单调队列——求滑动窗口最值 的统一封面

在做P1725琪露诺的时候,看出来要单调队列优化,但是忘记了,在这里简记一下板子。

O(n)O(n) 时间复杂度可求长度固定区间内值的最大或最小值。

  for(int i = 1; i <= n; i ++){
      if(hh <= tt && i - q[hh] + 1 > len)hh ++;
      while(hh <= tt && a[i] <= a[q[tt]])
          tt --;
      q[++tt] = i;

      if(i >= len)printf("%d ", a[q[hh]]);
  }

需要注意的是,队列终所存数是对应数字在实际数组中的下标

互动

0 人点赞 · 0 条评论


© 2026 By Catkin

Powered by Astro