算法学习(8):单调队列

单调队列

单调队列是一种主要用于解决滑动窗口类问题的数据结构,即,在长度为n的序列中,求每个长度为m的区间的区间最值。

//得到的是一个单调递减的队列
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()] << " ";
}

posted on 2021-05-05 18:23  小星◎  阅读(44)  评论(0)    收藏  举报

导航