题目
解释
- 范围是10000也可以用o(n*n),可能因为算法不复杂
- 思维的方法很简单
- 固定左区间i,右区间枚举
- 在区间范围内寻找最大值max和最小值min
- 如果max-min==j-i,则该区间一定能连续排序
代码段
#include<iostream>
using namespace std;
const int N=10010;
int a[N];
int main()
{
int n;cin>>n;int ans=0;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
int max1=-1,min1=1e6;
for(int j=i;j<=n;j++)
{
max1=max(max1,a[j]);
min1=min(min1,a[j]);
if((max1-min1+1)==j-i+1)
{
ans++;
}
}
}cout<<ans<<endl;
return 0;
}