题目描述[原题链接][https://www.acwing.com/problem/content/description/90/]
设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。
- push(x)–将元素x插入栈中
- pop()–移除栈顶元素
- top()–得到栈顶元素
- getMin()–得到栈中最小元素
样例
1 | MinStack minStack = new MinStack(); |
算法描述
定义两个栈,一个存放所有的值,一个存放最小值。每次向栈中添加元素的时候需要判断,最小栈的栈顶值是否小于当前值,小于就压到最小栈中,在之后的弹出操作中,如果弹出的元素在最小栈的栈顶也要被弹出。
C++代码
1 | class MinStack { |
Java代码
1 | class MinStack { |