public class Solution {
private Deque<Integer> stack;
private Deque<Integer> minStack;
public Solution() {
stack = new LinkedList<>();
minStack = new LinkedList<>();
// write your solution here
}
public int pop() {
if (stack.isEmpty()) {
return -1;
}
Integer temp = stack.pollFirst();
if (minStack.peekFirst().equals(temp)) {
minStack.pollFirst();
}
return temp;
}
public void push(int element) {
stack.offerFirst(element);
if (minStack.isEmpty() || minStack.peekFirst() >= element) {
minStack.offerFirst(element);
}
}
public int top() {
return stack.isEmpty() ? -1 :stack.peekFirst();
}
public int min() {
return minStack.isEmpty() ? -1 : minStack.peekFirst();
}
}