数据结构条目-单调队列

单调队列是一种特殊的数据结构,常用于解决滑动窗口类问题,确保时间复杂度为O(n)。队列保持元素单调递增或递减,并提供插入、查询、删除首尾元素的操作。在洛谷P1886题中,单调队列的实现通过STL的deque完成。
摘要由CSDN通过智能技术生成

数据结构条目-单调队列

名称:单调队列

用途:

用于解决滑动窗口类问题,时间复杂度为O(n)。

描述:

单调队列是一个双向队列(既可以在队首操作也可以在队尾操作),同时保证队列内的元素单调递增或递减。

单调队列有4种操作:

  1. 往单调队列中新增元素。新元素应该增加在队尾处。当新增元素破坏了单调性时,通过在队尾处删除元素来保证单调性,最后再加入新元素;有时候因为题干的限制,单调队列的长度是有上限的,当长度突破上限,此时应该在队首处删除元素来保证长度限制。
  2. 查询队首。
  3. 删除队首。
  4. 删除队尾。

实现:

通过STL的deque可以实现。

在这里插入图片描述

题目日志:

题目链接:洛谷P1886

P1886代码实现:

#include <stdio.h>
#include <deque>
using namespace std;
const int N = 3e6+100;
deque<int> q;
int a[N], b[N];
int main()
{
   
    int n, k; scanf("%d %d&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值