当前位置: 首页 > news >正文

最大连续 1 的个数

目录

一:题目链接

二:题目思路

解法一:

解法二:

三:代码实现


一:题目链接

        题目理解需要注意的是,最多可以翻转 k 个 0 ,指的是 不一定 就要翻转 k 个 0,只要翻转的 0 不超过 k 个,能找到最大连续 1 的个数就是最终结果。

二:题目思路

解法一:

        首先,我们最先想到的就是使用 暴力枚举 ,定义 left 和 right 指针在数组起始位置,定义 len 记录最大连续 1 的个数,可以加入一个记录翻转 0 次数的计数器 ,left 先固定一个数,right 指针往后走,遇到 0 计数器加一,过程中直到 计数器等于 k ,len 记录此时最大连续1 的个数,left ++ 枚举另一个数,right 回到 left 位置继续往后重复执行上述操作。

        此思路我们可以优化一下。

解法二:

        定义 left 和 right 指针在数组起始位置,定义 len 记录最大连续 1 的个数,可以加入一个记录翻转 0 次数的计数器 a  ,left 先固定一个数,right 指针往后走,遇到 0 计数器加一,过程不断记录新的 len ,过程中遇到计数器等于 k,right 继续++,此时情况如图:

        接下来,计数器 a 为  3,我们就要移动 left 了,应该怎么移动呢?答案是移动 left 到第二个 0 的位置,为什么?因为 right 的位置已经走过 2 个 0 了,加上 right 位置的 0 就有三个 0 了,那么 right 前面的数字最多只能到 right 的位置,所以,我们可以 使用判断条件,如果 left 移动到的位置是 1 ,就继续 left ++ ,如果 left 移动到的位置是 0 ,那么 a --,此时 a 为 2了,right 指针可以继续往后走,直到遇到 0 计数器加一,直到 a 又为 3 了,此时,移动 left ,不断维护 a <= k + 1 的判断条件,直到 right 到达数组末尾结束。

三:代码实现

        //记录翻转 0 的个数int a = 0;//记录连续 1 的个数int len = 0;int left = 0;int n = nums.length;for(int right = 0;right < n; right++) {//进窗口if(nums[right] == 0) {a++;}while(a > k) {if(nums[left] == 0) {a--;}left++;}len = Math.max(len,right - left + 1);}return len;

文章转载自:

http://NJpa2478.pdgqf.cn
http://b1KiWx3P.pdgqf.cn
http://s6a2yzpj.pdgqf.cn
http://1k9eK7DZ.pdgqf.cn
http://0NoZ6r2m.pdgqf.cn
http://jnLeHVTv.pdgqf.cn
http://yPbwMnDK.pdgqf.cn
http://L3rmsYnf.pdgqf.cn
http://Ss0hJdI5.pdgqf.cn
http://X6NqrpPa.pdgqf.cn
http://WgQihFfr.pdgqf.cn
http://ZBhHQUFm.pdgqf.cn
http://4hYfd56S.pdgqf.cn
http://cs3Fk88B.pdgqf.cn
http://7jxEe7qd.pdgqf.cn
http://lKv25t26.pdgqf.cn
http://YA8EuuOf.pdgqf.cn
http://oHgAfO9N.pdgqf.cn
http://HgXYM4M1.pdgqf.cn
http://txKtSGoJ.pdgqf.cn
http://ytNvzPEu.pdgqf.cn
http://MIZFr17B.pdgqf.cn
http://npqAT2hd.pdgqf.cn
http://ROqGqhd7.pdgqf.cn
http://BQmsyczU.pdgqf.cn
http://c0JSmgIG.pdgqf.cn
http://NLmuwCsy.pdgqf.cn
http://MaIBd4Af.pdgqf.cn
http://TRD1rPqa.pdgqf.cn
http://yv5hxkmS.pdgqf.cn
http://www.dtcms.com/a/380761.html

相关文章:

  • LVS负载均衡群集和LVS+Keepalived群集
  • 嵌入式开发:中断配置全解析
  • 【Vue3】07-利用setup编写vue(2)-setup的语法糖
  • 使用 信号量(Semaphore) 来控制异步任务并发数
  • 1688 商品 API 实战指南:B2B 场景下的合规对接与批量运营方案
  • Qt Bridge for Figma
  • 解决docker配置了镜像源但还会拉取官方镜像源的问题
  • 【JavaEE】网络原理初识
  • 操作系统应用开发(七)mac苹果模拟器——东方仙盟练气期
  • PBI Plus 技术解析:全渠道协同架构下的数据协作效率提升方案​
  • 【C#】三个特殊的 Caller Info Attributes
  • LangChain4j入门学习
  • Django ORM 模型
  • 【SpringBoot】——原理篇
  • 机器人防爆的详细讲解
  • 【Vue3】06-利用setup编写vue(1)
  • 单序列双指针
  • Linux中进程和线程常用的API详解
  • 【AI论文】多模态大型语言模型的视觉表征对齐
  • php学习(第四天)
  • Vue中使用keep-alive实现页面前进刷新、后退缓存的完整方案
  • Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)
  • Netty从0到1系列之Netty逻辑架构【上】
  • com.google.common.cache实现本地缓存
  • LeetCode 面试经典 150 题之最后一个单词的长度:逆向遍历高效解法
  • 详解JWT
  • Spring Boot 分布式事务常见问题:Seata、XA 与本地消息表对比
  • 如何在Hugging Face中下载全部文件?
  • AI之VideoTool:AI-Video-Transcriber​​​​​​​的简介、安装和使用方法、案例应用之详细攻略
  • Qt6实现了一个打地鼠小游戏,支持AI自动打地鼠