文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. 问题描述
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Example:
1 | MinStack minStack = new MinStack(); |
2. 求解
方法一
主要是模拟写一个最小栈。要注意push时可能会输入null。需要使用双栈实现,一个保存数据,一个保存最小值。由于随着数据出栈,最小值是不断变化的,因此需要一个最小值栈来保存最小值。方法一是最小值栈与普通栈大小不等的情况。
1 | class MinStack { |
方法二
最小值栈与存储元素的栈大小始终相等的情况
1 | class MinStack { |