题解
最长连号
1 条题解
-
0
解题思路
连号是连续的自然数,比如 2、3、4、5、6。用一个计数器
cur记录当前连号长度:如果当前数a[i]等于前一个数加 1,就cur++,否则重新从 1 开始。边扫边更新最大长度maxl。参考代码
#include <iostream> using namespace std; int main() { int n; cin >> n; int a[10005]; for (int i = 0; i < n; i++) cin >> a[i]; int maxl = 1, cur = 1; for (int i = 1; i < n; i++) { if (a[i] == a[i - 1] + 1) cur++; // 和上一个连续 else cur = 1; // 断了重新数 if (cur > maxl) maxl = cur; } cout << maxl << endl; return 0; }复杂度分析
扫一遍数组,n 最大 10000,时间复杂度 O(n),额外空间复杂度 O(n)。
- 1