题目
LCR 147. 最小栈 - 力扣(LeetCode)
请你设计一个 最小栈 。它提供 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack
类:
MinStack()
初始化堆栈对象。
void push(int val)
将元素val推入堆栈。
void pop()
删除堆栈顶部的元素。
int top()
获取堆栈顶部的元素。
int getMin()
获取堆栈中的最小元素。
示例 1:
输入:
输出:
解释:
提示:
-231 <= val <= 231 - 1
pop
、top
和 getMin
操作总是在 非空栈 上调用
push
、pop
、top
和 getMin
最多被调用 3 * 104
次
分析
栈是先入后出的结构,因此实际上可以每次计算当时的最小值,然后也用栈来保存,这样的话读取的时候不需要重新计算最小值,就能做到常数时间内检索到最小值。
代码
*****