题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5405db19b21850783ff99788ef5d91ea.png)
思路
- 关键问题在于:如果pop掉的是最小值,那么该如何查找pop掉后栈中最小的值?
- 考虑用两个栈试一下?结果卡时间了,润去题解。
- 题解是每次和栈顶比较,push进每次比较的最小值,这样删除的时候可以直接pop了,学会了。
代码
static class MinStack {
Deque<Integer> xStack;
Deque<Integer> minStack;
public MinStack() {
xStack = new LinkedList<Integer>();
minStack = new LinkedList<Integer>();
minStack.push(Integer.MAX_VALUE);
}
public void push(int x) {
xStack.push(x);
minStack.push(Math.min(minStack.peek(), x));
}
public void pop() {
xStack.pop();
minStack.pop();
}
public int top() {
return xStack.peek();
}
public int getMin() {
return minStack.peek();
}
}