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

LeetCode 1004. 最大连续1的个数 III

LeetCode 1004题 “最大连续1的个数 III” 是一道关于数组和滑动窗口的问题。题目描述如下:

题目描述

给定一个由若干 01 组成的数组 nums,以及一个整数 k。你可以将最多 k0 翻转为 1。返回经过翻转操作后,数组中连续 1 的最大个数。

示例:

  • 输入:nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
  • 输出:6
  • 解释:将中间的两个 0 翻转为 1,得到最长连续 1 的子数组 [1,1,1,0,0,1,1,1,1,1,1],长度为 6。

解题思路:滑动窗口

这道题可以通过滑动窗口算法高效解决。核心思路是:找到一个最长的子数组,其中最多包含 k0。如果窗口内的 0 数量超过 k,则需要收缩窗口左侧。

具体步骤如下:

  1. 扩展窗口:不断向右移动右指针 right,并统计窗口内 0 的数量。
  2. 收缩窗口:如果窗口内 0 的数量超过 k,则向右移动左指针 left,并减少窗口内 0 的数量,直到窗口内 0 的数量不超过 k
  3. 记录最大长度:在每次窗口合法(0 的数量 ≤ k)时,更新最大长度。

代码实现

以下是使用滑动窗口解决该问题的代码:

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int n = nums.size();int left = 0, right = 0;int zeroCount = 0;  // 记录窗口内0的数量int maxLen = 0;     // 记录最大连续1的长度while (right < n) {// 扩展窗口:如果当前元素是0,增加zeroCountif (nums[right] == 0) {zeroCount++;}// 收缩窗口:如果窗口内0的数量超过kwhile (zeroCount > k) {if (nums[left] == 0) {zeroCount--;}left++;}// 更新最大长度maxLen = max(maxLen, right - left + 1);right++;}return maxLen;}
};

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。每个元素最多被访问两次(右指针和左指针各一次)。
  • 空间复杂度:O(1),只需要常数级的额外空间。

关键点解释

  1. 窗口合法性:窗口内 0 的数量 ≤ k 时,窗口合法,可以计算长度。
  2. 动态调整:通过移动左指针 left,动态调整窗口大小,确保窗口内 0 的数量始终合法。
  3. 最大长度更新:每次窗口合法时,计算当前窗口长度 right - left + 1,并更新最大值。

这种滑动窗口的思想在处理数组中的子数组问题时非常常见,尤其是需要满足特定条件的最长/最短子数组问题。

相关文章:

  • 友达15.6寸G156HAN02.3工业显示模组
  • Redis String 设计思想深度解析
  • Datacom-hcia~Datacom-hcie学习笔记索引
  • 力扣-有效三角形的个数
  • 初识Linux · NAT 内网穿透 内网打洞 代理
  • 从零基础到最佳实践:Vue.js 系列(6/10):《Composition API(组合式 API)》
  • Redis集群在NoSQL中的应用与优化策略
  • 如何用数据可视化提升你的决策力?
  • CNN vs ViT:图像世界的范式演进
  • 英伟达CEO黄仁勋COMPUTEX 2025演讲实录:AI工厂时代已来,Blackwell架构全面投产
  • Java之函数式接口、lambda表达式、stream流操作、Optional容器、方法引用
  • 基于两阶段交互控制框架的互联多能系统协同自治优化
  • 架构图 C4 规范简介
  • vscode打开的文件被覆盖/只能打开两个文件(Visual Studio Code)
  • ollama使用gpu运行大模型
  • 【Java学习方法】类变量
  • STM32单片机GUI系统1 GUI基本内容
  • 六台升降台完整的限位保护逻辑
  • java 在用redis 的时候,如何合理的处理分页问题? redis应当如何存储性能最佳
  • 【聚合MQ管理 第一章】一个项目管理多种MQ 之 ActiveMq
  • 网站开发合同范本/百度百科官网入口
  • 网站建设市场前景如何/如何创建自己的域名
  • 制作自己的名字免费的/seo草根博客
  • html5与css3网页设计论文/杭州seo博客
  • java做网站的权限管理/网站流量排行
  • 网站全屏视频怎么做/免费网站推广软件