题解

难度:简单

知识点:数学逻辑

思路:

1.使用count变量来记录总的区间数

2.通过一层循环,依次判断两个相邻数是否连续,首先输入当前数子x,将x的前一个数保存在flat变量中。若flat+1=x,表示相邻数连续,将x值赋值给flat进行下一个数的判断。若flat+1不等于x,表示出现新区间,将count自加一,并且将x值赋值给flat进行下一个数的判断。

3.循环结束后输出count。

【注】不需要把数据进行存储,直接读进来进行相差是否为1的判断,时间复杂度o(n),空间复杂度为o(1)。

图片说明

#include<iostream>
using namespace std;
int main(){
    int n,x;
    int flat;
    cin>>n>>x;
    int count=1;
    flat=x;
    for(int i=1;i<=n-1;i++){
        cin>>x;
        if(flat+1!=x) count++;
        flat=x;    
    } 
    cout<<count<<endl;
    return 0;
}