https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/
代码
class MinStack {
//键值对思想
private Stack<Integer> dataStack; // 数据栈
private Stack<Integer> minStack; // 辅助栈,记录每次有元素进栈后或者出栈后,元素的最小值
/** initialize your data structure here. */
public MinStack() {
dataStack = new Stack<Integer>();
minStack = new Stack<Integer>();
}
public void push(int x) {
dataStack.push(x); //数据入栈
//辅助栈为空,或者栈顶元素大于x时,则辅助站输入
if(minStack.isEmpty()||minStack.peek() > x){
minStack.push(x);
}else{
minStack.push(minStack.peek());
}
}
public void pop() {
minStack.pop();// 辅助栈,栈出栈
dataStack.pop();// 数据栈,出栈
}
public int top() {
return dataStack.peek();
}
public int min() {
return minStack.peek();
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.min();
*/