首页 > 其他分享 >单调队列&单调栈

单调队列&单调栈

时间:2022-10-20 19:25:18浏览次数:50  
标签:队列 tt int hh strcmp 单调 op

队列

给你一个左右开口的容器,左进右出,可以知道先进去的一定先出来,所以可以用他的一些性质来实现一些操作,比如bfs就需要用到队列。

手写队列比较麻烦,这里贴一下代码自行体会

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10,maxn2=31*maxn;
int q[maxn];
int hh,tt;
int main()
{
    int m;
    cin>>m;
    hh=1;
    tt=0;
    while(m--)
    {
        char op[11];
        cin>>op;
        if(!strcmp(op,"push"))
        {
            int x;
            cin>>x;
            q[++tt]=x;
        }
        else if(!strcmp(op,"pop"))
        {
            hh++;
        }
        else if(!strcmp(op,"empty"))
        {
            if(hh<=tt)
                cout<<"NO"<<endl;
            else
                cout<<"YES"<<endl;
        }
        else if(!strcmp(op,"query"))
        {
            cout<<q[hh]<<endl;
        }
    }
}

当然一般情况下我们都不用这么麻烦因为c++有个自带的STL函数叫queue,直接把队列的相关操作打包好了,用这个东西需要 include ,但是我习惯用万能头,下面是关于queue的几个常用操作
q.back()返回最后一个元素
q.empty()如果队列空则返回真
q.front()返回第一个元素
q.pop()删除第一个元素
q.push()在末尾加入一个元素
q.size()返回队列中元素的个数

栈就是一个只有上面有开口的容器,进来出去都只能用这一个口,容易发现最后进去的反而会最先出来,然后我们就可以利用这个东西来进行一些操作比如关于后缀表达式之类的问题。

标签:队列,tt,int,hh,strcmp,单调,op
From: https://www.cnblogs.com/Multitree/p/16810949.html

相关文章

  • 单调队列&单调栈
    队列给你一个左右开口的容器,左进右出,可以知道先进去的一定先出来,所以可以用他的一些性质来实现一些操作,比如bfs就需要用到队列。手写队列比较麻烦,这里贴一下代码自行体会......
  • springcloud学习记录day4 -- 消息队列RubbitMQ
    同步通信和异步通信微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。同步通信我们之前学习的Feign调用就属于......
  • Vue—关于响应式(二、异步更新队列原理分析)
    本节需要准备知识点:EventLoop、Promise关于EventLoop介绍参考阮一峰老师的文章:http://www.ruanyifeng.com/blog/2013/10/event_loop.htmlhttps://www.ruanyifeng.com......
  • C语言之走迷宫深度和广度优先(利用堆栈和队列)
     完成以下迷宫 利用二维数组储存每一个数组里的值,若是不能走则为1,若是可行就是0,走过了就设为2。一般是再复制一个数组,用来记录。堆栈的思想就是将一个点的上下左右......
  • 顺序队列
    顺序队列:在顺序队列中有queueElem,front,rear,maxSizequeueElem代表队列的存储空间front代表队首的位置rear代表队尾的位置的下一个位置。maxSize代表最多放存储个数。......
  • Elasticsearch 线程池和队列问题,请先看这一篇
    手敲脑图串讲Elasticsearch核心知识点1、线程池相关线上实战问题问题1:从Kafka消费数据导入elasticsearch时,批量bulk写入抛异常被拒绝。ES集群四个节点,其中:两个节......
  • 技术分享| 消息队列Kafka群集部署
    一、简介1、介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志......
  • 队列queue的poll()和remove()的区别
    队列是一个典型的先进先出(FIFO)的容器。即从容器的一端放入事物,从另一端取出,并且事物放入容器的顺序与取出的顺序是相同的。在Queue中poll()和remove()有什么区别相......
  • 技术分享| 消息队列Kafka群集部署
    一、简介1、介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日......
  • 链表实现队列——————数据结构作业
    作业code2:-仿照作业code1的功能,将课本上链表的实现队列能完整实现-需要通过main函数调用并能进行友好的人机交互输入​​作业code1​​链表实现队列的代码:#include<bits/......