Minimum unsorted subarray using stack


#include<iostream>
#include<stack>
#include<limits.h>
using namespace std;

int main()
{
    int arr[]={1,4,6,8,2,5,10,12,14};
    stack<int> s;
    int minindex=INT_MAX;
    int maxindex=INT_MIN;
    int max=INT_MIN;
    for(int i=0;i<9;i++)
    {
        if(s.empty()||arr[i]>arr[max])
        {
            s.push(i);
            if(max<arr[i])
            {
                max=i;
            }
        }
        else
        {
            maxindex=i;
            while(!s.empty()&&arr[i]<arr[s.top()])
            {
                s.pop();
            }
            if(minindex>s.top())
            {
                minindex=s.top()+1;
            }
        }
    }

    cout<<"length of subarray "<<maxindex-minindex+1;
    return 0;
}

Comments

Popular Posts