排序
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
int n=nums.size();
vector<int>temp=nums;
sort(temp.begin(),temp.end());
int left=0,right=n-1,out=0;
while(left<right){
if(nums[left]!=temp[left]&&nums[right]!=temp[right])break;
if(nums[left]==temp[left])left++;
if(nums[right]==temp[right])right--;
}
if(left==right)return 0;
return right-left+1;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/c190f592a4154c018e1e6701805da17d.png)
一次遍历
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
int n=nums.size();
int left=-1,right=-1,max_n=INT_MIN,min_n=INT_MAX;
for(int i=0;i<n;i++){
if(nums[i]<max_n)right=i;
else max_n=nums[i];
if(nums[n-1-i]>min_n)left=n-1-i;
else min_n=nums[n-1-i];
}
if(left==-1&&right==-1)return 0;
return right-left+1;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/be3af32d09834f54b8096d7d3428ba25.png)