一个栈正常用,另一个用来存最小值,当一个最小值没有被弹出且在它之后没有值比它更小,那么在它没弹出前所有的最小值都是它
class MinStack {
Deque<Integer> st;
Deque<Integer> mi;
/** initialize your data structure here. */
public MinStack() {
st = new LinkedList<>();
mi = new LinkedList<>();
}
public void push(int x) {
st.addLast(x);
if(mi.size() == 0)
mi.addLast(x);
else
mi.addLast(Math.min(x,mi.getLast()));
}
public void pop() {
if(st.size() == 0)
return;
mi.removeLast();
st.removeLast();
}
public int top() {
return st.size() == 0 ? -1 : st.getLast();
}
public int getMin() {
return mi.size() == 0 ? -1 : mi.getLast();
}
}