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

LeetCode 2419:最长最大按位与子数组代码大测试用例出错排查

问题分析与修复

你的代码逻辑存在一个关键错误:当遇到非最大值元素时,错误地将temp重置为1,导致后续连续最大值段的长度被多计算了1。

错误场景复现

举个简单例子:假设数组为[max, max, x, max, max, max],最长连续最大值序列长度是3,但你的代码会算出4。流程如下:

  1. max_index=0,temp初始为1(对应第一个max)
  2. 遍历到第二个max,temp变为2
  3. 遇到x,ans更新为2,temp重置为1
  4. 遍历到第三个max,temp变为2;第四个max→3;第五个max→4
  5. 最终ans=4,但实际最长连续序列是3

错误原因

当遇到非最大值元素时,当前连续最大值段已经结束,temp应该重置为0(表示当前没有连续的最大值),而不是1。你的代码中temp=1会导致后续遇到第一个最大值时,直接从1开始累加,相当于把这个最大值重复计算了一次。

修复后的代码

不需要定位第一个最大值的索引,直接遍历整个数组即可,逻辑更简洁且正确:

max_val = max(nums)
ans = 0
current_length = 0
for num in nums:
    if num == max_val:
        current_length += 1
        ans = max(ans, current_length)
    else:
        current_length = 0
return ans

修复逻辑说明

  1. 先找到数组中的最大值max_val
  2. 遍历数组,维护current_length记录当前连续最大值的长度
  3. 遇到最大值时,current_length加1,并更新ans为当前最长长度
  4. 遇到非最大值时,current_length重置为0
  5. 最后返回ans即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:34:50