CodeACM
HOT 100 · 栈 · LC 155

最小栈:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

· MinStack() 初始化堆栈对象。

· void push(int value) 将元素 value 推入堆栈。

· void pop() 删除堆栈顶部的元素。

· int top() 获取堆栈顶部的元素。

· int getMin() 获取堆栈中的最小元素。

输入格式

第一行输入操作数 q,接下来 q 行输入 push x、pop、top 或 getMin。保证 pop、top、getMin 时栈非空。

输出格式

每个 top 和 getMin 操作输出一行结果,push 和 pop 不输出。

数据范围

  • 1 ≤ q ≤ 3 × 10⁴
  • −2³¹ ≤ x ≤ 2³¹ − 1

公开样例

样例 1

输入

7
push -2
push 0
push -3
getMin
pop
top
getMin

输出

-3
0
-2

弹出 −3 后栈顶为 0,最小值恢复为 −2。

样例 2

输入

4
push 2
push 1
getMin
top

输出

1
1

当前栈顶同时也是最小值。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。