实现思想就是实现两个栈,一个栈存放所有元素,一个栈只有输入的x小于等于当前栈顶元素的时候才会push。
注意:对比Integer数据类型的元素的时候,一定要用equals而不是==,原因是==是用来比较对象的引用地址而不是比较Integer的值,所以要把Integer当作对象来看待。
class MinStack {
/** initialize your data structure here. */
Stack<Integer> stk = new Stack<Integer>();
Stack<Integer> stk1 = new Stack<Integer>();
public void push(int x) {
stk.push(x);
if(stk1.isEmpty()||x<=stk1.peek())
stk1.push(x);
}
public void pop() {
if(stk.pop().equals(stk1.peek()))
stk1.pop();
}
public int top() {
return stk.peek();
}
public int getMin() {
return stk1.peek();
}
}