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

LeetCode 2100:银行抢劫吉日算法部分测试用例失败排查

LeetCode 2100《银行抢劫吉日》解法错误排查

题目描述

你和一伙盗贼计划抢劫银行。给定一个0索引的整数数组security,其中security[i]是第i天值班的警卫数量。天数从0开始编号。同时给定整数time。
第i天是适合抢劫银行的吉日需满足:

  1. 第i天前后至少各有time天;
  2. 第i天之前的time天内,警卫数量非递增;
  3. 第i天之后的time天内,警卫数量非递减。
    更正式地说,第i天是吉日当且仅当security[i - time] >= security[i - time + 1] >= ... >= security[i] <= ... <= security[i + time - 1] <= security[i + time]。
    返回所有适合抢劫的吉日(0索引)列表,返回顺序无关。

问题重现

你编写的代码在测试用例:

security = [1,2,5,4,1,0,2,4,5,3,1,2,4,3,2,4,8]
time = 2

时,输出为[4,5,6,10,14],但预期输出是[5,10,14]。

错误分析

你的核心思路是对的,但在前缀数组的判断逻辑上出现了两处关键错误:

1. 左侧条件判断错误

你定义的left[i]表示以第i天结尾的连续非递增天数(包含i本身),要满足“第i天之前time天内非递增”,本质是要求从i-time到i的time+1天连续非递增,也就是left[i] >= time + 1。但你代码中用的是left[i-1] >= time,这个逻辑完全不匹配需求,会错误把部分不符合的天数纳入结果。

2. 右侧条件判断错误

同理,right[i]表示以第i天开头的连续非递减天数(包含i本身),要满足“第i天之后time天内非递减”,需要right[i] >= time + 1(覆盖i到i+time的time+1天)。但你代码中用的是right[i+1] >= time,这会忽略i本身和i+1的大小关系,导致像i=4这种security[4] > security[5]的情况被误判为符合条件。

3. 多余的模式存在判断

你代码中的l_pattern_found和r_pattern_found属于冗余逻辑,后续的筛选步骤会自动过滤掉不符合条件的天数,不需要提前返回空列表。

修正后的代码

class Solution(object):
    def goodDaysToRobBank(self, security, time):
        """
        :type security: List[int]
        :type time: int
        :rtype: List[int]
        """
        total_guards = len(security)
        if time == 0:
            return [i for i in range(total_guards)]
        
        left = [1] * total_guards
        for i in range(1, total_guards):
            if security[i-1] >= security[i]:
                left[i] = left[i-1] + 1
        
        right = [1] * total_guards
        for i in range(total_guards-2, -1, -1):
            if security[i] <= security[i+1]:
                right[i] = right[i+1] + 1
        
        days = []
        for i in range(time, total_guards - time):
            if left[i] >= time + 1 and right[i] >= time + 1:
                days.append(i)
                
        return days

验证结果

修正后的代码针对上述测试用例,会正确计算left和right数组,筛选出i=5、10、14三个符合条件的吉日,与预期输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:05:23