1210. 连号区间数

简介: 1210. 连号区间数

题目链接

1210. 连号区间数 - AcWing题库


一些话


流程

在 1∼N

的某个排列中有多少个连号区间呢?

求连号区间的个数,

求……个数问题

首先将区间枚举出来,再判断是否连号即可

关于连号区间

正常有序的连号区间比如

1,2,3,4,区间的边界值即区间的最小值与最大值,且差值与左右边界指针相关

由此,判断区间是否连号,首先要将区间的最大值和最小值找出来,判断其差值是否等于左右边界指针差值即可

n<1e5,可以用

for(int i = 0;i < n;i++){

   for(int j = i;j < n;j++){

     

   }

}

枚举区间

时间复杂度n*n/2,


套路

单个数组区间的枚举 O(n * n / 2)

1. for(int i = 0;i < n;i++){
2.     for(int j = i;j < n;j++){
3.         
4.     }
5. }


2.连号区间判断

       if(maxn - minn == j - i)


ac代码

// 8:35~8:40思考
// ~52调试
//~59 accepted
//9:01 ~ 
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e4 + 10,INF = 0x3f3f3f3f;
int f[N];
int n;
int main(){
    cin >> n;
    for(int i = 0;i < n;i++){
        scanf("%d",&f[i]);
    }
    int ans = 0;
    for(int i = 0;i < n;i++){
        int maxn = -INF,minn  = INF;
        for(int j = i;j < n;j++){
            minn = min(minn,f[j]);
            maxn = max(maxn,f[j]);
            if(maxn - minn == j - i) ans++;
        }
    }
    cout << ans << endl;
}
目录
相关文章
|
7月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
7月前
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
32 0
|
7月前
|
算法 测试技术 C#
【线段树】2276. 统计区间中的整数数目
【线段树】2276. 统计区间中的整数数目
|
7月前
lamba统计最大值,最小值,平均值,总和,个数
lamba统计最大值,最小值,平均值,总和,个数
|
7月前
|
算法 Java 测试技术
连号区间数
连号区间数
64 0
|
7月前
|
Python
计算小于或等于n的非负整数区间包含的1的数量
计算小于或等于n的非负整数区间包含的1的数量
69 0
|
7月前
|
C++
汇总区间(C++)
汇总区间(C++)
58 0
不用数组求多个数的最小值
不用数组求多个数的最小值
49 0
LeetCode 1343. 大小为 K 且平均值大于等于阈值的子数组数目
LeetCode 1343. 大小为 K 且平均值大于等于阈值的子数组数目