题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/90c4c58fa6155a32a1c9e42dd949972b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c54a371501c683c96816ecb7bf594975.png)
给几个样例吧,代码就很容易看明白了。
[2,6,4,8,10,9,15]
[1,3,5,4,2]
[1,3,7,10,5,6,4,2,12]
class Solution {
#define INF 100001
public:
int l=-1,r=-1,k=INF;
void cal(int i,int val){
if(l==-1) l=i;
r=i+1,k=min(k,val);
}
int findUnsortedSubarray(vector<int>& a) {
int n=a.size();
int premx=-INF;
for(int i=0;i<=n-1;++i){
if(i<=n-2&&a[i+1]<a[i]) cal(i,a[i+1]);
else if(a[i]<premx) r=i;
premx=max(premx,a[i]);
}
if(l==-1) return 0;
while(l&&a[l-1]>k) --l;
return r-l+1;
}
};