题目
设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack
类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例1:
1 | MinStack minStack = new MinStack(); |
提示:
- -2^31 <= val <= 2^31 - 1
- pop、top 和 getMin 操作总是在 非空栈 上调用
- push, pop, top, and getMin最多被调用 3 * 10^4 次
解法
解法一:
借用Java自带的Stack,使用一个辅助栈,保存当前最小元素。
Java
1 | class MinStack { |
解法二:
在遇到比min更小的值时,才把min入栈
Java
1 | class MinStack { |