一定要注意,进站之后要用equals判断,用==判断出来,栈是两个不同的对象进站
class MinStack {
//新建两个栈,一个a,一个b,b用来辅助a的存储
Stack<Integer> a = new Stack<>();
Stack<Integer> b = new Stack<>();
/** initialize your data structure here. */
public MinStack() {
}
public void push(int x) {
//进站时,如果b中为空则直接进入辅助栈,如果不为空就判断当前存储元素是否比辅助b栈顶元素小
if (b.isEmpty()) {
b.push(x);
a.push(x);
}else {
//当前元素比栈顶小,就进入辅助栈,反制则直接进入a
a.push(x);
if (x <= b.peek())
b.push(x);
}
}
public void pop() {
//出栈时,判断当前元素是否为辅助b的栈顶
if (a.peek().equals(b.peek())){
//如果是则弹出b
b.pop();
}
a.pop();
}
public int top() {
return a.peek();
}
public int getMin() {
return b.peek();
}
}