题解 | #最长全1串#python

最长全1串

https://www.nowcoder.com/practice/744eb5eb60c044e1b05e4dfb5f578dbe

n,k=list(map(int,input().split()))
l=list(map(int,input().split()))
if l.count(1)==0: # 全部为0的场景
    print(k)
elif l.count(0)==0: # 全部为1的场景
    print(n)
else:
    res=[]
    le=0
    idx=[] # 记录0的索引
    for i in range(n):
        if l[i]==0:
            idx.append(i)
            k-=1 # 消耗一次修改机会
        if k>=0:
            le=i+1
            res.append(le)
        else: # 0的个数已经大于k
            le=i-idx[-k-1] # 以位置i结尾得到的最长全1串的长度,就是我们从i向前修改连续K个0后的结果
            res.append(le)
    print(max(res))

全部评论

相关推荐

02-12 00:59
已编辑
哈尔滨工业大学 产品经理
华为 软件开发岗 20.6*16薪 本科
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务