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();
  }
}

results matching ""

    No results matching ""