• 【c++刷题Day2】专题3栈与队列&单调栈与单调队列T1


    这是C++刷题的Day2
    在这里插入图片描述
    🕋题目描述
    🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
    栈和队列都是常用的线性结构,它们都提供两个操作:

    Push:加入一个元素。

    Pop:弹出一个元素。

    不同的是,栈是”先进后出”,而队列则是”先进先出”。

    给出一个线性结构的进出顺序,判定这个结构是栈还是队列。
    输入格式

    第一行输入一个整数T,代表有T组测试数据,T<=20

    对于每组测试数据:

    第一行,一个整数n,代表操作的次数。3<=n<=2000

    接下来n行,每行包含两个整数 type val。当type = 1时,表示该次操作为push操作,val表示进入的数字。当type=2时,表示该次操作为pop操作,val代表出来的数字。
    输出格式

    每组测试数据输出一行。

    输出改组数据对应的线性结构,”Stack” 或者 “Queue”。

    题目保证是栈或者队列的一种。
    输入输出样列
    输入样例1:

    2
    6
    1 1
    1 2
    1 3
    2 3
    2 2
    2 1
    4
    1 1
    1 2
    2 1
    2 2

    输出样例1:

    Stack
    Queue
    🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
    🔑思路

    模拟栈和队列,每次检查栈的栈顶元素和队列的队头元素是否匹配即可

    💯CODE代码:

    #include 
    #pragma GCC optimize(2)
    #define fi first
    #define se second
    #define min3 (x , y , z) min (x , min (y , z))
    #define max3 (x , y , z) max (x , max (y , z))
    
    using namespace std ;
    
    typedef long long LL ;
    typedef double LF ;
    typedef pair < int , int > PII ;
    int cmd , val ;
    
    int main ()
    {
    
    
    	int t ;
    	cin >> t ;
    	while (t -- ) {
    		queue < int > q ;
    		stack < int > stk ;
    		int n ;
    		cin >> n ;
    		int vis = 0 ;
    		while (n -- ) {
    			cin >> cmd >> val ;
    			if (cmd == 1) {
    				stk.push (val) ;
    				q.push (val) ;
    			} else if (! q.empty () && ! stk.empty ()) {
    				int tq = q.front () , ts = stk.top () ;
    				if (val != tq && ! vis) {
    					vis = 2 ;
    				} else if (val != ts && ! vis) {
    					vis = 1;
    				}
    				if (! q.empty())
    					q.pop () ;
    				if (! stk.empty ())
    					stk.pop () ;
    			}
    		}
    		if (vis == 1)
    			cout << "Queue" ;
    		else
    			cout << "Stack" ;
    		puts ("") ;
    	}
    
    
    
    	return 0 ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 相关阅读:
    030-从零搭建微服务-消息队列(二)
    二叉树的遍历
    自建音乐服务器Navidrome之二
    基于粒子群算法的电力系统无功优化研究(IEEE14节点)(Matlab代码实现)
    学习笔记7--卫星定位技术(下)
    SpringBoot面试专题及答案
    新库上线 | CnOpenData国际货运代理信息数据
    高效的C++(一)
    基于ssm的蛋糕预定网站
    《动态规划 ---- 线性规划一》----- 动态规划的基本概念,线性动态规划-->背包问题
  • 原文地址:https://blog.csdn.net/m0_60519493/article/details/126350416