content: /************************************************************************************************************
  Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
  
  push(x) -- Push element x onto stack.
  pop() -- Removes the element on top of the stack.
  top() -- Get the top element.
  getMin() -- Retrieve the minimum element in the stack.
  
  ************************************************************************************************************/
  class MinStack {
  
      /** initialize your data structure here. */
      Stack<Integer> stack;
      Stack<Integer> minStack;
      public MinStack() {
          stack = new Stack<>();
          minStack = new Stack<>();
      }
      
      public void push(int x) {
          stack.push(x);
          if(minStack.size()==0){
              minStack.push(x);
          }else{
              minStack.push(x<minStack.peek() ? x:minStack.peek());
          }
      }
      
      public void pop() {
          stack.pop();
          minStack.pop();
      }
      
      public int top() {
          return stack.peek();
      }
      
      public int getMin() {
          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.getMin();
   */
  