top1编程
← 返回题目
题解

最长连号

1 条题解

  • 0
    @ 2026-8-4 17:25:35

    解题思路

    连号是连续的自然数,比如 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