题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
- 两个元素一一对应的栈,在push和pop操作中同进同退:一个主栈,用来作为存储元素的栈;一个辅栈,用来存储最小元素,其每个元素表示主栈对应元素自身和之前元素里的最小值。
- 计算栈中最小元素时,只要返回辅栈栈顶元素即可。
- 辅栈的构建
- 主栈push元素时,检查该元素与辅栈栈顶元素的大小关系,如果较小则也将该值push到辅栈,否则将辅栈栈顶元素复制一份push到辅栈。
- 主栈pop元素时,辅栈也pop元素。
- 思路与
64-滑动窗口的最大值
有异曲同工之妙。
1 | class Solution: |