AcWing 1210. 连号区间数
原题链接
简单
作者:
Fairy2.0
,
2025-01-04 02:43:43
,
所有人可见
,
阅读 2
#include <iostream>
#include <algorithm>
using namespace std;
//暴力做法时间复杂度O(n^3)
//优化
//因为是1到n的n个数的某一个排列
//所以1到n的每个数都会出现且只出现一次
//所以如果某一个子区间是连号区间
//排序后一定是x , x+1 , x+2 , x+3···这种形式
//那么这个区间的最大值-最小值 = 区间长度 - 1 == j - i
const int N = 1e4 + 10;
int n;
int a[N];
int main (){
cin >> n;
for (int i = 0;i < n;i++)
scanf ("%d" , &a[i]);
int res = 0;
for (int i = 0;i < n;i++){
int Max = -1e9; //区间中的最大值
int Min = 1e9; //区间中的最小值
for (int j = i;j < n;j++){
Max = max(Max , a[j]);
Min = min(Min , a[j]);
if ((Max - Min) == (j - i)) res++;
}
}
cout << res << endl;
return 0;
}