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

【滑动窗口】最⼤连续 1 的个数 III(medium)

⼤连续 1 的个数 III(medium)

  • 题⽬描述:
  • 解法(滑动窗⼝):
    • 算法思路:
    • 算法流程:
  • C++ 算法代码:
  • Java 算法代码:

题⽬链接:1004. 最⼤连续 1 的个数 III

题⽬描述:

给定⼀个⼆进制数组 nums 和⼀个整数 k ,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1的最⼤个数 。
⽰例 1
输⼊: nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出: 6
解释
[1,1,1,0,0,1 ,1,1,1,1,1]
红⾊数字从 0 翻转到 1 ,最⻓的⼦数组⻓度为 6 。
⽰例 2
输⼊: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出: 10
解释
[0,0,1,1, 1,1 ,1,1,1,1,1,1,0,0,0,1,1,1,1]
红⾊数字从 0 翻转到 1 ,最⻓的⼦数组⻓度为 10 。

解法(滑动窗⼝):

算法思路:

不要去想怎么翻转,不要把问题想的很复杂,这道题的结果⽆⾮就是⼀段连续的 1 中间塞了 k个 0 嘛。
因此,我们可以把问题转化成:求数组中⼀段最⻓的连续区间,要求这段区间内 0 的个数不超过 k 个。
既然是连续区间,可以考虑使⽤「滑动窗⼝」来解决问题。

算法流程:

  1. 初始化⼀个⼤⼩为 2 的数组就可以当做哈希表 hash 了;初始化⼀些变量 left = 0 ,
    right = 0 , ret = 0 ;
  2. 当 right ⼩于数组⼤⼩的时候,⼀直下列循环:
    i. 让当前元素进⼊窗⼝,顺便统计到哈希表中;
    ii. 检查 0 的个数是否超标:
    • 如果超标,依次让左侧元素滑出窗⼝,顺便更新哈希表的值,直到 0 的个数恢复正常;
    iii. 程序到这⾥,说明窗⼝内元素是符合要求的,更新结果;
    iv. right++ ,处理下⼀个元素;
  3. 循环结束后, ret 存的就是最终结果。

C++ 算法代码:

class Solution{
public:int longestOnes(vector<int>& nums, int k){int ret = 0;for(int left = 0, right = 0, zero = 0; right < nums.size(); right++){if(nums[right] == 0) zero++; // 进窗⼝while(zero > k) // 判断if(nums[left++] == 0) zero--; // 出窗⼝ret = max(ret, right - left + 1); // 更新结果}return ret;}
}

Java 算法代码:

class Solution{public int longestOnes(int[] nums, int k){int ret = 0;for(int left = 0, right = 0, zero = 0; right<nums.length;right++){if(nums[right] == 0) zero++; // 进窗⼝while(zero > k) // 判断if(nums[left++] == 0) zero--; // 出窗⼝ret = Math.max(ret, right - left + 1); // 更新结果}return ret;}
}
http://www.xdnf.cn/news/504.html

相关文章:

  • 【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 大数据平台简介
  • 掌握 MySQL:从命令行操作到数据类型与字段管理
  • 论文阅读:2025 arxiv AI Alignment: A Comprehensive Survey
  • Zookeeper的通知机制是什么?
  • 【更新完毕】2025妈妈杯C题 mathercup数学建模挑战赛C题数学建模思路代码文章教学:音频文件的高质量读写与去噪优化
  • xilinx fpga中pll与mmcm的区别
  • 【DT】USB通讯失败记录
  • MySQL 全局锁:全量备份数据要怎么操作?
  • 04_银行个贷系统下的技术原理解析
  • LLM多卡并行计算:Accelerate和DeepSpeed
  • 数据可视化(Matplotlib和pyecharts)
  • 【云馨AI-大模型】2025年4月第三周AI领域全景观察:硬件革命、生态博弈与国产化突围
  • 【unity游戏开发入门到精通——UGUI】RectTransform矩形变换组件
  • 保生产 促安全 迎国庆
  • 平均池化(Average Pooling)
  • Ai Agent 在生活领域的深度应用与使用指南
  • 第七周作业
  • day29 学习笔记
  • Jenkins设置中文显示
  • Mermaid 是什么,为什么适合AI模型和markdown
  • webgl入门实例-向量在图形学中的核心作用
  • 【2025】Datawhale AI春训营-蛋白质预测(AI+生命科学)-Task2笔记
  • Cribl 优化EC2 ip-host-region 数据
  • 20-算法打卡-哈希表-赎金信-leetcode(383)-第二十天
  • Java反射
  • 废物九重境弱者学JS第十四天--构造函数以及常用的方法
  • VBA 调用 dll 优化执行效率
  • YOLO拓展-锚框(anchor box)详解
  • 基础智能体的进展与挑战第 5 章【奖励】