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

LeetCode算法题(Go语言实现)_16

题目

给定一个二进制数组 nums 和一个整数 k,假设最多可以翻转 k 个 0 ,则返回执行操作后 数组中连续 1 的最大个数 。

一、代码实现

func longestOnes(nums []int, k int) int {left, zeroCnt, maxLen := 0, 0, 0for right := 0; right < len(nums); right++ {if nums[right] == 0 {zeroCnt++}// 窗口收缩条件for zeroCnt > k {if nums[left] == 0 {zeroCnt--}left++}// 更新最大窗口长度maxLen = max(maxLen, right - left + 1)}return maxLen
}func max(a, b int) int {if a > b { return a }return b
}

二、算法分析

1. 核心思路
  • 滑动窗口机制:维护一个允许最多包含 k 个 0 的窗口,通过动态调整左右边界寻找最大连续 1 的区间
  • 贪心策略:当窗口内 0 的数量超过 k 时,左边界右移直到满足条件,确保窗口始终包含有效解
2. 关键步骤
  1. 初始化窗口:左边界 left=0,统计窗口内 0 的数量 zeroCnt
  2. 扩展右边界:遍历数组元素,遇到 0 时增加计数
  3. 收缩条件:当 zeroCnt > k 时,左移左边界并更新计数
  4. 极值记录:每次循环记录窗口最大长度
3. 复杂度分析
指标说明
时间复杂度O(n)每个元素最多被访问两次(左右指针各一次)
空间复杂度O(1)仅需存储指针和计数器变量

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景处理
  • 全1数组nums = [1,1,1], k=0 → 直接返回数组长度
  • k=0情况:等价于寻找最长连续1的子数组
  • 超大k值:当k ≥ 数组0的总数时返回数组长度
2. 多语言实现对比
语言实现要点性能优化技巧
Python使用collections.deque记录0的位置预计算0的索引数组加速窗口调整
JavaArrayDeque存储0的索引,窗口调整时直接跳转到首个无效位置后位运算优化0计数逻辑
C++双指针配合zero_count变量,无需额外存储结构循环展开优化边界判断
3. 算法对比
方法优点缺点
滑动窗口法时间复杂度最优,空间效率高需处理指针同步逻辑
前缀和+二分支持随机查询空间复杂度O(n)
暴力枚举实现简单时间复杂度O(n²)

五、总结与拓展

1. 核心创新点
  • 窗口动态调整:通过zeroCnt计数器的状态机式管理,实现线性时间复杂度
  • 无效位置跳跃:当窗口收缩时,左指针可直接跳转到首个无效0的后一位,减少冗余计算
2. 数学证明

设数组长度为 n,窗口左右指针移动总距离为 2n,算法时间复杂度严格为 O(n)。通过归纳法可证:每次窗口扩展必然覆盖当前最优解的可能性,收缩操作确保不遗漏更优解。

3. 应用场景扩展
  • 网络质量监测:统计允许丢包情况下的最大连续正常信号段
  • DNA序列分析:查找允许突变次数内的最长保守序列
  • 用户行为分析:检测连续活跃天数(允许短暂中断)

相关文章:

LeetCode算法题(Go语言实现)_16

题目 给定一个二进制数组 nums 和一个整数 k&#xff0c;假设最多可以翻转 k 个 0 &#xff0c;则返回执行操作后 数组中连续 1 的最大个数 。 一、代码实现 func longestOnes(nums []int, k int) int {left, zeroCnt, maxLen : 0, 0, 0for right : 0; right < len(nums); …...

CORDIC算法:三角函数的硬件加速革命——从数学原理到FPGA实现的超高效计算方案

计算机该如何求解三角函数&#xff1f;或许你的第一印象是采用泰勒展开&#xff0c;或者采用多项式进行逼近。对于前者&#xff0c;来回的迭代计算开销成本很大&#xff1b;对于后者&#xff0c;多项式式逼近在较窄的范围內比较接近&#xff0c;超过一定范围后&#xff0c;就变…...

JVM 面经

1、什么是 JVM? JVM 就是 Java 虚拟机&#xff0c;它是 Java 实现跨平台的基石。程序运行之前&#xff0c;需要先通过编译器将 Java 源代码文件编译成 Java 字节码文件&#xff1b;程序运行时&#xff0c;JVM 会对字节码文件进行逐行解释&#xff0c;翻译成机器码指令&#x…...

SEO(搜索引擎优化)详解

SEO&#xff08;搜索引擎优化&#xff09;详解 SEO是Search Engine Optimization的缩写&#xff0c;中文称为"搜索引擎优化"。它是指通过一系列技术和方法&#xff0c;提高网站在搜索引擎自然&#xff08;非付费&#xff09;搜索结果中的排名&#xff0c;从而获得更…...

Ubuntu平台下安装Node相关环境

说明&#xff1a;在进行VUE、TS等开发需要用到NodeJS相关环境&#xff0c;不同的项目有时候需要不同的Node版本支撑。本文将详细讲解NVM、Node、Yarn、PM2等环境安装的实施步骤。 测试服务器环境&#xff1a;22.04 LTS。 1. NVM 定义&#xff1a;Node Version Manager&#x…...

deepseek大模型一体机与deepseek的关系

deepseek大模型一体机与deepseek的关系 一、deepseek大模型一体机是什么 DeepSeek大模型一体机是由深度求索&#xff08;DeepSeek&#xff09;公司推出的软硬件一体化AI解决方案&#xff0c;旨在为企业提供高效、便捷的大模型部署和应用能力。 二、deepseek大模型一体机与de…...

Windows Server 2025 使用 IIS 搭建 ASP.NET 3.5 网站

开启远程桌面 参考文章Windows server开启远程桌面教程打开服务管理器。ECS 配置安全组&#xff0c;开启 3389Telnet 验证网络联通性 telnet x.x.x.x 338安装 Windows App&#xff0c;登录验证 安装 ASP.NET 3.5 1.参考文章Windows Server 2012安装 .NET Framework 3.5和 Wi…...

高等数学-第七版-上册 选做记录 习题7-2

1. 2....

基于Promise链式调用的多层级请求性能优化

代码优化-循环嵌套关联请求 1. 背景 在实际开发中&#xff0c;我们经常会遇到需要嵌套关联请求的场景&#xff0c;比如&#xff1a; 获取项目列表获取项目详情获取项目进度 2. 问题 在这种场景下&#xff0c;我们可能会遇到以下问题&#xff1a; 串行请求瀑布流&#xff…...

【强化学习】基于深度强化学习的微能源网能量管理与优化策略研究【Python】

目录 主要内容 程序要点 2.1 微能源网系统组成 2.2 强化学习及Q学习算法 部分代码 运行结果 下载链接 主要内容 该程序借助深度 Q 网络&#xff08;DQN&#xff09;&#xff0c;学习预测负荷、风 / 光可再生能源功率输出及分时电价等环境信息&#xff0c;运用…...

楼宇自控借何种技术,驱动建筑迈向高效绿色

在全球积极倡导可持续发展的大背景下&#xff0c;建筑行业作为能源消耗和碳排放的大户&#xff0c;实现高效绿色发展迫在眉睫。楼宇自控系统凭借其先进的技术手段&#xff0c;成为推动建筑向高效绿色转型的关键力量。那么&#xff0c;楼宇自控究竟借助哪些技术&#xff0c;让建…...

监控易一体化运维:监控易机房管理,打造高效智能机房

在数字化浪潮中&#xff0c;企业对数据中心和机房的依赖程度与日俱增&#xff0c;机房的稳定运行成为业务持续开展的关键支撑。信息化的变迁&#xff0c;见证了机房管理从传统模式向智能化、精细化转变的过程。今天&#xff0c;就为大家深度剖析监控易在机房管理方面的卓越表现…...

简记_FPGA 硬件最小系统设计

一、FPGA板级设计的五要素 1.1、电源电路 核心电压&#xff1a;一般为固定值 IO电压&#xff1a;FPGA的IO分为多个bank&#xff0c;同一个bank的不同IO引脚电压相同&#xff0c;不同bank的电压可以不同 辅助电压&#xff1a;除了核心电压和IO电压&#xff0c;FPGA工作所需的…...

1.1-站点差异\源码差异\数据存储差异\MVC模型

1、有哪几种站点 分主站、分站、端口站、子站、目录站 2、有哪几种源码语言框架差异 开源-如Zblog 闭源-内部开发 加密-如通达OA 3、网站数据存储有哪几个方式 本地数据库&#xff1a;本地服务器搭建 分离数据库&#xff1a;另外的服务器搭建 云数据库&#xff1a;RDS…...

PHP安装HTML转图片的扩展GD库的使用

修改你的PHP.ini文件,找到以下位置 ;extensionphp_gd2.dll 把前面的;去掉…...

清华大学第10讲:迈向未来的AI教学实验396页PPT 探索未来教育的无限可能|附PPT下载方法

导 读INTRODUCTION 今天跟大家分享的是清华大学新闻与传播学院、人工智能学院双聘教授沈阳教授团队出品的《迈向未来的AI教学实验》课程作业集&#xff0c;随着人工智能技术的飞速发展&#xff0c;教育领域也迎来了前所未有的变革。该报告为沈阳教授与学生们在“迈向未来的AI教…...

《白帽子讲 Web 安全》之服务端请求伪造(SSRF)深度剖析:从攻击到防御

引言 在当今复杂的网络环境中&#xff0c;Web 应用安全犹如一座时刻需要精心守护的堡垒。随着技术的不断演进&#xff0c;各类安全威胁层出不穷&#xff0c;其中服务端请求伪造&#xff08;SSRF&#xff09;正逐渐成为令开发者与安全从业者头疼的一大难题。吴翰清在《白帽子讲…...

豪越消防一体化安全管控平台:消防管理智能化

在社会快速发展、城市建设日益复杂的今天&#xff0c;消防安全始终是保障人民生命财产安全、维护社会稳定的重要基石。传统消防管理模式在应对当下复杂多变的消防安全需求时&#xff0c;逐渐暴露出诸多局限性&#xff0c;而豪越消防一体化平台的出现&#xff0c;为消防管理领域…...

VMware虚拟机 ubuntu22.04无法与共享粘贴板和拖拽文件的解决方案

VMware虚拟机 ubuntu22.04无法与共享粘贴板和拖拉文件的解决方案 卸载VMware tools安装open-vm-tools还无法拖拽文件 卸载VMware tools 确保卸载完vmware-tools # 进入vmware-tools安装目录/bin sudo vmware-uninstall-tools.pl sudo rm -rf /usr/lib/vmware-tools sudo apt-…...

瑞芯微RK356X主板复用接口配置方法,触觉智能嵌入式方案商

本文介绍瑞芯微RK356X系列复用接口配置的方法&#xff0c;基于触觉智能RK3562开发板演示&#xff0c;搭载4核A53处理器&#xff0c;主频高达2.0GHz&#xff1b;内置独立1Tops算力NPU&#xff0c;可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。 复…...

企业签名app部分用户能安装,部分用户不能安装

企业签名的app有的用户能安装&#xff0c;有的用户安装失败。 最近在做企业签名后&#xff0c;有客户反馈&#xff0c;客户的手机能安装&#xff0c;但是别人的手机安装不了。 一般有3种情况&#xff1a; 1、首先确保配置文件info.plist里面都添加了SSL证书(HTTPS)。 2、开发人…...

NX二次开发刻字功能——预览功能

这个预览功能其实在NX软件中很常见,有利于建模者确定刻字的位置,这个功能早在唐康林老师的超级长方体教程中出现过。我只是学以致用。把该功能集成刻字中。 在勾选预览的同时,如果点击放大镜也就是显示预览结果,要刻字的对象透明度数值为70,同时预览结果文字会变成撤销,如…...

前端知识点---window.location.assign() 和 window.location.href 的区别(javascript)

window.location.assign() 和 window.location.href 的主要区别&#xff1a; 读取和设置 window.location.href&#xff1a;既可以读取当前 URL&#xff0c;也可以通过赋值更改 URL。 window.location.assign()&#xff1a;只能用于跳转到新的 URL&#xff0c;不能读取当前地…...

容器主机CPU使用率突增问题一则

关键词 LINUX、文件系统crontab 、mlocate根目录使用率 There are many things that can not be broken&#xff01; 如果觉得本文对你有帮助&#xff0c;欢迎点赞、收藏、评论&#xff01; 一、问题现象 业务一台容器服务器&#xff0c;近期经常收到cpu不定期抖动告警&#x…...

华为hcia——Datacom实验指南——配置IPv4静态路由,默认路由和浮动静态路由

什么是IPv4 IPv4静态路由&#xff0c;是手动配置的&#xff0c;不会随着网络拓扑的变化而变化&#xff0c;所配置的路由信息也不会在网络中传播&#xff0c;所以它主要运用在小型网络或者作为动态路由的补充。 IPv4的配置 配置的命令很简单 IP route-static &#xff08;目…...

解释时间复杂度 O() 表示法,如何评估算法效率?

时间复杂度与前端开发实战指南 作为前端工程师&#xff0c;理解时间复杂度能帮助我们写出高性能代码。以下是结合前端场景的深度解析&#xff1a; 一、时间复杂度的本质 时间复杂度用大O符号表示算法执行时间随数据规模增长的变化趋势。​关注的是最坏情况下增长的量级&…...

【Apache Hive】

一、Hive简介 官网&#xff1a;https://hive.apache.org 1、Hive是什么&#xff1f; Apache Hive 是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表&#xff0c;基于表提供了一种类似SQL的查询模型…...

SQL Server安装进度卡在 57%:Windows Update 服务异常

问题现象&#xff1a; 安装 SQL Server 2022 时进度停滞在 57%&#xff0c;日志报错 Error code 0x80070422&#xff0c;提示 “Windows Update 服务未运行”。 快速诊断 检查服务状态&#xff1a; # 查看 Windows Update 服务状态 Get-Service -Name wuauserv | Select-Object…...

YOLO历代发展 图像增强方式 架构

YOLO1 YOLOV5 数据增强 mosaic 仿射变换(Affine)、透视变换(Perspective) 网络搭建...

DexGrasp Anything:具有物理-觉察的普遍机器人灵巧抓取

25年3月来自上海科技大学的论文“DexGrasp Anything: Towards Universal Robotic Dexterous Grasping with Physics Awareness”。 能够抓取任何物体的灵巧手&#xff0c;对于通用具身智能机器人的开发至关重要。然而&#xff0c;由于灵巧手的自由度高&#xff0c;物体种类繁多…...