首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >滑动窗口-1004.最大连续1的个数III

滑动窗口-1004.最大连续1的个数III

作者头像
白天的黑夜
发布2025-10-22 15:49:49
发布2025-10-22 15:49:49
1190
举报

一、题目解析

这是我们结合示例1分析的过程,在过程中我们发现在计算长度后如果不对反转为1的0进行还原,将会影响其他的长度结果。所以我们可以用一个计数器来记录0的个数,这样就省去了翻转在还原的操作。

二、算法解析

经过上面的分析,我们将问题转化为找出最长的子数组,且0的个数不超过个。

解法1:暴力枚举+zero计数器

通过移动或固定左端点,枚举出所有子数组长度且0的个数不超过k。

解法2:滑动窗口优化

1.双指针:left=0,rigth=0;还有zero计数器。

2.进窗口:right右移,如果是1,无视,如果是0,zero计数器+1;

3.判断:zero是否大于k

出窗口:移动left,如果是1,无视,如果是0,zero计数器-1;

循环重复这两个过程

4.更新结果:当zero<k时,我们就可以更新结果,用len来记录。

老规矩,根据上面的思路去自己实现代码,链接:1004. 最大连续1的个数 III - 力扣(LeetCode)

三、代码示例

为什么会把更新结果放在最后呢?按照我们的判断当进入while循环时可以先保留此时的len值,然后在出窗口,继续更新len。但是看看下面的报错的样例,我们可以分析一下,放在while内,还是外面。

如果在循环内,len=1,如果在最后,len=3.

看到最后,如果对您有所帮助,还请留下一个免费的赞,我们下期再见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档