You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找数组指定数字最长连续序列的代码错误排查

代码错误原因

你的代码核心问题是count计数器的重置逻辑存在漏洞:仅在当前连续目标数字的长度大于历史最大值时才会重置count,否则会保留当前count的值,导致后续统计新的连续序列时,会把前一段未触发重置的长度累加进去,最终结果偏大。

错误执行流程(对应number=0的测试用例)

  1. 遍历到第一段连续的2个0:count累计为2,遇到后续非0元素时,count>max成立,max更新为2,count重置为0
  2. 遍历到第二段连续的1个0:count累计为1,遇到后续非0元素时,count=1 < max=2,不进入if判断分支,count没有被重置,仍然保留为1
  3. 遍历到第三段连续的5个0:count从1开始累加,最终变成6,导致输出结果与预期的5不符

修复代码

将count的重置操作挪到if(count>max)的判断外即可,不管当前连续长度是否大于最大值,只要遇到非目标数字都需要重置计数器:

int count = 0;
int max = 0;
for (int i = 0; i < array.length; i++) {
    if (array[i] == number) {
        count++;
    } else {
        if (count > max) {
            max = count;
        }
        // 统一重置计数器
        count = 0;
    }
}
// 处理数组末尾为连续目标数字的情况
if (count > max) {
    max = count;
}
System.out.println(max);

内容的提问来源于stack exchange,提问作者Tom1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:27:02