classSolution{public:intfindUnsortedSubarray(vector<int>& nums){int mid_min = INT_MAX, mid_max = INT_MIN;int left =0, right = nums.size()-1;int ii =1;while(ii < nums.size()&& nums[ii]>= nums[ii-1]) ii++;if(ii == nums.size())return0;while(ii < nums.size()) mid_min =min(mid_min, nums[ii++]);if(mid_min != INT_MAX)while(nums[left]<= mid_min) left++;
ii = right-1;while(ii >=0&& nums[ii]<= nums[ii+1]) ii--;while(ii >=0) mid_max =max(mid_max, nums[ii--]);if(mid_max != INT_MIN)while(nums[right]>= mid_max) right--;return right - left +1;}};
classSolution{public:intfindUnsortedSubarray(vector<int>& nums){
vector<int> nums2 = nums;sort(nums2.begin(), nums2.end());int left =0, right = nums.size()-1;while(left < right && nums[left]== nums2[left]) left++;while(left < right && nums[right]== nums2[right]) right--;if(left == right)return0;return right - left +1;}};