首页 > 其他分享 >单调栈单调队列学习笔记

单调栈单调队列学习笔记

时间:2023-07-04 11:03:18浏览次数:52  
标签:1.4 队列 复杂度 元素 笔记 int 单调

目录:

  1. 单调栈
    1.1 概念
    1.2 实现
    1.3 时间复杂度分析
    1.4 应用
  2. 单调队列
    1.1 概念
    1.2 实现
    1.3 时间复杂度分析
    1.4 应用
  3. 习题

1.单调栈

1.1 概念

单调栈为满足单调性的栈结构,栈内元素满足单调性。

1.2 实现

为满足单调性,在遍历到一个元素时,若此时加入后栈不满足单调性,则弹出栈顶。最后将该元素加入。
代码实现:

int stk[N],top;
int a[N];
for(int i=1;i<=n;i++)
{
    while(top&&a[stk[top]]<a[i]) top--;
    stk[++top]=i;
}

1.3 时间复杂度分析

由于只有一层循环,所以时间复杂度为 \(O(n)\)。

1.4 应用

我们发现,若我们在弹栈时使用一个数组记录该元素所对的值为 \(i\),记该数组为 \(h[i]\),则易发现,我们可以用单调栈维护数列中每个元素左右第一个比它大的元素位置。

2.单调队列

1.1 概念

单调队列为满足单调性的队列结构。

1.2 实现

我们维护队列,在每次加入元素的时候,不仅我们要判断加入后是否满足单调性,还要保证队首元素有没有超过队列长度限制。
所以我们要维护队首与队尾。

int hd=1,tl=0;
//k为规定长度
for(int i=1;i<=n;i++)
{
    while(hd<=tl&&q[hd]<i-k+1) hd++;
    while(hd<=tl&&a[q[tl]]>a[i]) tl--;
    q[++tl]=i;
}

1.3 时间复杂度分析

由于只有一层循环,所以时间复杂度为 \(O(n)\)。

1.4 应用

单调队列一般应用与求区间最小值。

标签:1.4,队列,复杂度,元素,笔记,int,单调
From: https://www.cnblogs.com/sheeplittlecloud/p/17525089.html

相关文章

  • 方芳:非物质文化遗产学习整理笔记(5-6)
    武汉市江夏路桥工程有限公司中央财经大学 经济管理学院    方   芳    15927602711 第五章 非物质文化遗产的利用利用的取向非物质文化遗产利用职向主要是指在现代社会文化语境中非物质文化遭产将何去何从的问题。具体是指非物质文化遗产的利用向......
  • ChatGLM-6B阿里云服务器部署及微调笔记
    1、ChatGLM-6B阿里云服务器部署整体参考零基础,零成本,部署一个属于你的大模型https://blog.csdn.net/qqxx6661/article/details/130311311?ops_request_misc=&request_id=&biz_id=102&utm_term=阿里云chatglm&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaid......
  • 公共语言运行库(CLR)开发系列课程(3):COM Interop基础 学习笔记
    公共语言运行库(CLR)开发系列课程(3):COMInterop基础学习笔记  上章地址什么是COMComponentObjectModel组建对象模型 基于接口(Interface)接口=协议IID标识接口V-table虚表方式调用单继承 对象(Object)实现一个或者多个接口举例:IDispatch......
  • C语言学习笔记
    C语言学习笔记1.初识C语言常见类型长度单位:字节=比特全局变量和局部变量全局变量:定义在花括号外的变量局部变量:定义在花括号内的变量局部变量和全局变量的名字重合时,局部变量优先C语言规定变量要定义在当前代码块的最前面*计算两数之和:#include<stdio.h>intmain()......
  • mysql迁移到pqsql笔记
    在将MySQL迁移到PostgreSQL的过程中,遇到了一些问题,下面是一些简单的解决方案。使用命令,初始化数据库,并设置postgres的密码bin\initdb-EUTF-8-Amd5-Upostgres-W-Ddata--如果只使用bin\pg_ctl-Ddatainit则不会设置postgres的密码命令启动pqsql:bin\pg_ctl-Dda......
  • 软测笔记7-【mysql实操题】
    实操题1建表准备#建学生信息表studentcreatetablestudent(snovarchar(20)notnullprimarykey,snamevarchar(20)notnull,ssexvarchar(20)notnull,sbirthdaydatetime,classvarchar(20));#建立教师表createtableteacher(tnovarchar(20)notnullprima......
  • 软测笔记6-【Mysql面试题】
    1.请列出几款典型的关系型和非关系型数据库关系型数据库:mysql、sql-server、oracle非关系型:redis、mongodb2.请列出mysql数据库的特点特点有:可移植性好、支持多操作系统、支持多语言、开源社区版本免费、支持多线程等3.Mysql中常用的数据类型有哪些?字符串型、数值型、......
  • MYSQL笔记:删除操作Delete、Truncate、Drop用法比较
    1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据drop>truncate>delete2、原理方面2.1deletedelete属于数据库DML操作语言,只会删除数据表中的记录,会执行事务,执行的时候也会触发触发器。InnoDB数据库引擎中,执行delete操作只会给删除的记录打上了删除标记,并不会真正删除......
  • 笔记本扩展显示器分辨率低,navicat显示大模糊
    解决办法:右键->属性->兼容性->更改高DPI设置......
  • 前缀和学习笔记与总结
    前缀和学习笔记与总结目录前缀和一维前缀和What如何求作用公式模板模板题目题目大意CODE二维前缀和What\(S_{i,j}\)怎么算矩阵的和公式模板模板题目题目大意CODE前缀和一维前缀和What现有原数组:\[a_1,a_2,a_3,\ldots,a_n\]对应的前缀和数组应满足:\[S_i=a_1+a_2+a_......