1. 题目
2. 思路
(1) 单调栈
- 维护一个单调栈,只push不大于栈中所有元素的元素,因此栈顶元素永远是最小值。
- 注意!判断两个Integer变量是否相等时尽量调用equals()。
3. 代码
import java.util.Deque;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
}
}
class MinStack {
Deque<Integer> stack1;
Deque<Integer> stack2;
public MinStack() {
stack1 = new LinkedList<>();
stack2 = new LinkedList<>();
}
public void push(int x) {
stack1.push(x);
if (stack2.isEmpty() || x <= stack2.peek()) {
stack2.push(x);
}
}
public void pop() {
if (stack1.pop().equals(stack2.peek())) {
stack2.pop();
}
}
public int top() {
return stack1.peek();
}
public int min() {
return stack2.peek();
}
}