生成一个正常的栈和一个能记录最小值的栈,详情看注释
class MinStack {
//感觉像一个普通栈加一个可以查最小值的功能站
Deque<Integer> xStack;
Deque <Integer> minStack;
public MinStack() {
xStack = new LinkedList<Integer>();
minStack = new LinkedList<Integer>();
//先让一个最大的数压在minStack,这样第一次进来的数就是最小的了
minStack.push(Integer.MAX_VALUE);
}
public void push(int val) {
//两个都要push,min要有所选择
xStack.push(val);
minStack.push(Math.min(val,minStack.peek()));
}
public void pop() {
//两个都要无条件pop
xStack.pop();
minStack.pop();
}
public int top() {
//取xSatck的peek;
return xStack.peek();
}
public int getMin() {
//取minStack的peek
return minStack.peek();
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(val);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/