#1038. 栈的最小值(简单的单调栈)
栈的最小值(简单的单调栈)
Description
若数组lst中有Maxn个元素,对应索引为0..Maxn-1,用该数组构建栈方法如下:
(1)栈空条件:top=-1
(2)入栈操作:更新栈顶指针位置,然后放置数据:top=top+1; lst[top]=x
(3)栈满处理:当栈顶指针top==Maxn-1时栈满!此时不能再放数据在栈中。
说明:
当执行入栈操作时,若栈已满,则输出"ERR full!",直接结束后面操作;
当执行出栈操作时,若栈为空,则输出"ERR empty!",直接结束后面操作;
当对栈进行询问时,若栈非空,则输出栈中最小值,若为空栈,则输入"None!",后面操作继续执行。
Format
Input
输入数据共两行:
第一行为一个整数n,描述数组的大小;
第二行为一行字符,描述入栈和出栈:
其中字符“I”表示入栈,后面数据表示入栈元素;
字符“O”表示出栈,输出栈顶数据。
字符"Q"表示询问,输出栈中最小值,若栈为空栈,则输入"None!"
Output
一行,多个数据 (输出的数据若有多个,则用”,“间隔) ERR full!
Samples
4
I,6,I,7,I,3,I,11,Q,O,Q,O,Q,I,4,I,9,Q,I,17
3,11,3,3,6,4,ERR full!
Limitation
1s, 1024KiB for each test case.
说明:本题询问操作要求时间复杂度为O(1)
相关
在以下作业中: