Testcase : [8,8,9,10,6,8,2,4,2,2,10,6,6,10,10,2,3,5,1,2,10,4,2,0,9,4,9,3,0,6,3,2,3,10,10,6,4,6,4,4,2,5,1,4,1,1,9,8,9,5,3,5,5,4,5,5,6,5,3,3,7,2,0,10,9,7,7,3,5,1,0,9,6,3,1,3,4,4,3,6,3,2,1,4,10,2,3,4,4,3,6,7,6,2,1,7,0,6,8,10]
My o/p : 8 , system o/p : 7
code :
int maxTurbulenceSize(vector<int>& arr) {
int n = arr.size();
if(n==1) return 1;
if(n == 2) {
if(arr[0] == arr[1]) return 1;
else return 2;
}
vector<int> color(n);
for(int i=1;i<n;i++)
{
if(arr[i] > arr[i-1]) color[i] = 1;
else if(arr[i] < arr[i-1]) color[i] = 0;
else color[i] = -1;
}
int i = 1;
while(i<n && color[i]==-1) i++;
if(i == n) return 1;
int ans = 0 , l = 2, j=i-1;
multiset<int> s;
s.insert(i-1);
s.insert(i);
while(i < n-1)
{
if(color[i] == !color[i+1])
s.insert(i+1);
else if(color[i+1] == -1)
{
if(s.size() > ans) ans = s.size();
s.clear();
s.insert(i+1);
}
else
{
if(s.size() > ans) ans = s.size();
while(j < i){
s.erase(j);
j++;
}
s.insert(i+1);
}
i++;
}
if(s.size() > ans) ans = s.size();
return ans;
}