Min Stack - Leetcode

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.

Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> Returns -3.
minStack.pop();
minStack.top();      --> Returns 0.
minStack.getMin();   --> Returns -2.



class MinStack {

    /** initialize your data structure here. */
  
    Stack<Integer> stack = new Stack<Integer>();
    public MinStack() {
        // stack = new Stack<Integer>();
    }
   
    public void push(int x) {
        stack.push(x);
    }
   
    public void pop() {
        stack.pop();
    }
   
    public int top() {
        return stack.peek();
    }
   
    public int getMin() {
         int min = Integer.MAX_VALUE;
        for(Integer stk:stack){
            if(stk<min)
                min = stk;
        }
        return min;
    }
}

/**
 * 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();
 */


 Try this on Leetcode


Here all the operations are done through in-build methods in Stack  except getMin(). For getMin(), set initial value for min as Integer Max Value (for comparison reason) and traverse till the end of the stack to find minimum element.

Comments

Popular posts from this blog

Balanced Binary Tree

First Unique Character in a String

Majority Element

Smallest Range II