Minimum stack

Implementation of Minimum stack

Example 1:

Input: push={10,23,5} ,getminimun ,push={6,3}, getminimum, pop, getminimum      
Output: 5,3,5

Approach:

Java

import java.util.Stack;
import javafx.util.Pair;

@SuppressWarnings("restriction")
public class MinimumStack {
    public static void main(String[] args) {
        // stack pair to hold the element and the
        // minimum at the top of stack
        Stack<Pair<IntegerInteger>> stack =
            new Stack<Pair<IntegerInteger>>();
        // add element's
        addELement(stack, 5);
        addELement(stack, 23);
        addELement(stack, 10);
        // find minimum element
        System.out.print(findMinimumElement(stack) + " ");
        // add again element's
        addELement(stack, 3);
        addELement(stack, 6);
        // find minimum
        System.out.print(findMinimumElement(stack) + " ");
        removeElement(stack);
        // find minimum
        System.out.print(findMinimumElement(stack) + " ");
    }

    // method for remove element from top of stack
    private static void removeElement(Stack<Pair<Integer,
                     Integer>> stack) {
        if (!stack.isEmpty())
            stack.pop();

    }

    private static void addELement(Stack<Pair<Integer,
                 Integer>> stackint value) {
        int new_min;

        // if stack is empty then
        // the minimum element is the given elememt
        if (stack.isEmpty())
            new_min = value;

        // else the minimum element is
        // the min of stack top and current element
        else
            new_min = Math.min(stack.peek().getValue(), value);

        // push the current element
        // with the minimum element
        stack.add(new Pair<IntegerInteger>(value, new_min));

    }

    // method for find minimum value from the stack
    private static int findMinimumElement(Stack<Pair<Integer,
                             Integer>> stack) {
        // if empty then -1
        if (stack.isEmpty())
            return -1;
        Pair<IntegerIntegerp = stack.peek();
        return (intp.getValue();
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

//function to add the new element 
//into the stack
void addElement(stack<pair<int,int>> &st,int value)
{
   int new_min;
   
   //if stack is empty then
   //the minimum element is the given 
   //elememt
   if(st.empty())
      new_min=value;

  //else the minimum element is
  //the min of stack top and current elememt
  else
    new_min=min(st.top().second,value);

  //push the current element
  //with the minimum element
  st.push({value,new_min});
}

//function to remove the
//top of the stack
void removeElement(stack<pair<int,int>> &st)
{
    //if not empty 
    if(!st.empty())
       {
           int removed_element=st.top().first;

           //remove the to element from the stack
           st.pop();
       }

}

//function to find the
//minimum element of the stack
int findMinimumElement(stack<pair<int,int>> &st)
{
    //if stack is empty
    //return -1
    if(st.empty())
       return -1;
    
    //else return the minimum element from
    //the stack
    else 
      return st.top().second;
}
int main()
{
   //stack pair to hold the element and the
   //minimum at the top of stack
   stack<pair<int,int>> st;
   addElement(st,10);
   addElement(st,23);
   addElement(st,5);

   //print 5
   cout<<findMinimumElement(st)<<"\n";
   addElement(st,6);
   addElement(st,3);

   //print 3
   cout<<findMinimumElement(st)<<"\n";
   removeElement(st);

   //print 5
   cout<<findMinimumElement(st)<<"\n";
   return 0;
}



No comments:

Post a Comment