剑指 Offer 30. 包含min函数的栈
本题 题目链接
题目描述
![](https://img2020.cnblogs.com/blog/1963654/202008/1963654-20200818100420202-1465353012.png)
我的题解
方法:【转自leetcode大佬】
![](https://img2020.cnblogs.com/blog/1963654/202008/1963654-20200818100612587-1494037027.png)
思路分析
![](https://img2020.cnblogs.com/blog/1963654/202008/1963654-20200818100753535-1372812436.png)
![](https://img2020.cnblogs.com/blog/1963654/202008/1963654-20200818100852588-421474574.png)
代码如下
Stack<Integer> a,b; // a是主栈,b是辅助栈
/** initialize your data structure here. */
public MinStack() {
a = new Stack<>();
b = new Stack<>();
}
public void push(int x) {
a.add(x);
if (b.isEmpty() || x <= b.peek()) b.add(x);
}
public void pop() {
if (!b.isEmpty() && b.peek().equals(a.peek()) ) b.pop();
a.pop();
}
public int top() {
return a.peek();
}
public int min() {
return b.peek();
}