Stack - Implementation

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    private static int[] stkArr = null;
       
        private static int[] stkMaxArr = null;
       
        private static int maxPointer = 0;
       
        private static int currentPointer =-1;
       
       
       
        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);
                int N = sc.nextInt();
                stkArr = new int[N];
               
                stkMaxArr = new int[N];
               
                for(int i=0;i<N;i++)
                {
                        int m = sc.nextInt();
                       
                        if(m==1)
                        {
                                int x = sc.nextInt();
                                push(x);
                        }else if(m==2){
                                pop();
                        }else if(m==3){
                                printMax();
                        }
                }
        }
       
        public static void push(int x){
                 currentPointer++;
                 stkArr[currentPointer]=x;
                 
                 if(maxPointer==0 || x>stkMaxArr[maxPointer-1]){
                 stkMaxArr[maxPointer]=x;
                 maxPointer++;
                 }else if(x==stkMaxArr[maxPointer-1])
                 {
                         stkMaxArr[maxPointer]=x;
                         maxPointer++;
                 }
               
                 
               
               
        }
       
        public static void pop(){
                int val = stkArr[currentPointer];
                stkArr[currentPointer]=0;
                 currentPointer--;
               
                 if(maxPointer>0 && val==stkMaxArr[maxPointer-1]){
                         stkMaxArr[maxPointer-1]=0;
                         maxPointer--;
                 }else if(maxPointer==0){
                         stkMaxArr[maxPointer]=0;
                 }
                 
               
        }
       
       
        public static void printMax()
        {
                System.out.println(stkMaxArr[maxPointer-1]);
        }
}

Interview Questions: 

Search