public class MinStack {
Stack<Integer> stack;
Stack<Integer> miniStack;
/** initialize your data structure here. */
public MinStack() {
stack = new Stack<>();
miniStack = new Stack<>();
}
public void push(int x) {
stack.push(x);
if (miniStack.isEmpty()) {
miniStack.push(x);
} else {
if (miniStack.peek() >= x) {
miniStack.push(x);
}
}
}
public void pop() {
if (stack.isEmpty()) {
return;
}
int val = stack.peek();
stack.pop();
if (miniStack.peek() == val) {
miniStack.pop();
}
}
public int top() {
if (stack.isEmpty()) {
return 0;
}
return stack.peek();
}
public int getMin() {
if (miniStack.isEmpty()) {
return 0;
}
return miniStack.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.getMin();
*/
Min Stack
最新推荐文章于 2020-05-04 20:28:04 发布