【数据结构】单调队列

参考这篇文章

单调队列的作用是:给定一个长度为 n 的数组,维护长度为 m 的区间最大/小值

(下面以维护区间最小值为例,最大值相反)

简单来说就是维护一个 deque,deque 的队头是当前最小值的序号,其余所有元素都是之后可能成为最小值的元素的序号(只有可能成为最小值,元素的序号才会存在于队中)

时间复杂度 O ( n ) O(n) O(n)

模板:

deque<int> q; // 存储序号
for (int i = 0; i < n; ++i)
{
   
    if (!q.empty() && i - q.front() >= m) // 长度超出的从前开始删,直到删到长度符合要求为止
        q.pop_front();
    while (!q.empty() && V[q.back()] > V[i]) // 从队尾开始,凡是比新入队的大的,那它再也不可能成为最小值了,就直接删掉(求区间最大值把这里改成<即可)
        q.pop_back();
    q.push_back(i); // 新元素序号入队
    if (i >= m - 1)
        cout << V[q.front()] << " ";
}

相关推荐

  1. 数据结构单调队列

    2024-02-01 14:02:02       58 阅读
  2. 数据结构-单调队列

    2024-02-01 14:02:02       39 阅读
  3. 数据结构单调

    2024-02-01 14:02:02       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 14:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 14:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 14:02:02       82 阅读
  4. Python语言-面向对象

    2024-02-01 14:02:02       91 阅读

热门阅读

  1. C语言结构体

    2024-02-01 14:02:02       50 阅读
  2. 图论——最短路径

    2024-02-01 14:02:02       41 阅读
  3. JUnit

    JUnit

    2024-02-01 14:02:02      49 阅读
  4. vue登陆修改密码等加密(禁止明文传输)

    2024-02-01 14:02:02       55 阅读
  5. Python 将文本转换成语音播放 pyttsx3

    2024-02-01 14:02:02       48 阅读
  6. 【GPU驱动开发】- GPU架构流程

    2024-02-01 14:02:02       46 阅读
  7. go语言-字符串处理常用函数

    2024-02-01 14:02:02       50 阅读
  8. P3654 First Step (ファーストステップ)题解

    2024-02-01 14:02:02       52 阅读
  9. 你保存alzet渗透泵中文说明书了吗?

    2024-02-01 14:02:02       50 阅读
  10. 关于js的动画效果

    2024-02-01 14:02:02       51 阅读
  11. C语言函数指针与回调函数

    2024-02-01 14:02:02       46 阅读
  12. 30个常用的lodash工具函数

    2024-02-01 14:02:02       53 阅读
  13. CG-70B 双轴普及型倾角传感器

    2024-02-01 14:02:02       56 阅读