class Solution {
public int findUnsortedSubarray(int[] nums) {
int min = Integer.MIN_VALUE;
int max = Integer.MAX_VALUE;
int n = nums.length;
int i = 0;
while(i < n-1 && nums[i] <= nums[i+1])
i++;
if(i-1 >= 0)
min = nums[i-1];
int j = n-1;
while(j > 0 && nums[j] >= nums[j-1])
j--;
if(j+1 < n)
max = nums[j+1];
for(int k = i; k <= j;k++){
while(nums[k] < min){
i--;
if(i-1 >= 0)
min = nums[i-1];
else
min = Integer.MIN_VALUE;
}
while(nums[k] > max){
j++;
if(j+1 < n)
max = nums[j+1];
else
max = Integer.MAX_VALUE;
}
}
if(j <= i)
return 0;
else
return j-i+1;
}
}