最长连号
题目描述
输入长度为 n n n 的一个正整数序列,要求输出序列中最长连号的长度。
连号指在序列中,从小到大的连续自然数。
输入格式
第一行,一个整数 n n n。
第二行, n n n 个整数 a i a_i ai,之间用空格隔开。
输出格式
一个数,最长连号的个数。
样例 #1
样例输入 #1
10
1 5 6 2 3 4 5 6 8 9
样例输出 #1
5
提示
数据规模与约定
对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 1 0 4 1 \leq n \leq 10^4 1≤n≤104, 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1≤ai≤109。
思路
1.定义:
n:样本容量
a:左边自然数,初始化-
b: 右边自然数
len:连号的长度,初始化为0
maxx:连号长度的最大值
2.输入n
3.循环n次:
3.1 输入每个自然数b;
3.2 判断如果 b-a==1(说明a和b连续):长度len+1;
3.3 否则说明a和b不连续,b是下一个连号的开始):长度len,赋值为1
3.4 b赋值给a;
3.5 求len的最大值,保存到maxx。
4.输出maxx
样例代码1
#include<bits/stdc++.h>
using namespace std;
int main(){
// freopen(".in", "w", stdin);
// freopen(".out", "r", stdout);
int n, a = -1, b, len = 0, maxx = 0;
cin >> n;
for(int i = 0; i < n; i++){
cin >> b;
if(a + 1 == b){
len++;
}else{
len = 1;
}
a = b;
maxx = max(len, maxx);
}
cout << maxx;
return 0;
}
样例代码2
#include<bits/stdc++.h>
using namespace std;
int main(){
// freopen(".in", "w", stdin);
// freopen(".out", "r", stdout);
int n, a, b, len = 1, maxx = 0;
cin >> n >> a;
for(int i = 1; i < n; i++){
cin >> b;
if(a + 1 == b){
len++;
}else{
len = 1;
}
a = b;
maxx = max(len, maxx);
}
cout << maxx;
return 0;
}