滑动窗口练习3-最大连续1的个数(三)

news2024/11/27 17:49:50

题目链接. - 力扣(LeetCode)

题目描述:

给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k0 ,则返回 数组中连续 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 <= nums.length <= 105

  • nums[i] 不是 0 就是 1

  • 0 <= k <= nums.length

解法(滑动窗口):

算法思路:

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

算法流程:

a.初始化一个大小为 2 的数组就可以当作哈希表 hash 了;初始化一些变量 left = 0,right = 0,ret = 0;
b.当 right 小于数组大小的时候,一直下列循环:
  1️⃣让当前元素进入窗口,顺便统计到哈希表中
  2️⃣检查 0 的个数是否超标;
    * 如果超标,依次让左侧元素滑出窗口,顺便更新哈希表的值,直到 0 的个数恢复正常
  3️⃣程序到这里,说明窗口内元素是符合要求的,更新结果;
  4️⃣right++ ,处理下一个元素;
c.循环结束后,ret 存的就是最终结果。

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;
    }
};


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1897256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平面设计考试题

考试题 缺省页作用&#xff1a;缓减缺省页带来的负面情绪&#xff0c;增加s用户与产品的粘度&#xff0c;提升产品的用户体验 网站基本类型 c端b端 c端 面向用户和消费者的 门户站 产品网站 企业网站 电商网站 专题页面 游戏网站 视频网站 h5移动端 四大门户网站:新浪&…

【Android源码】Gerrit上传Android源码

关于Gerrit的安装参考下面链接 【Android源码】Gerrit安装 要实现上传Android源码&#xff0c;需要经历以下几步&#xff1a; 下载Android代码创建源码仓库创建manifests仓库上传源码其他电脑下载源码 要证明Gerrit中的源码真实可用&#xff0c;肯定是以其他人能真正共享到代…

idea中maven全局配置

配置了就不需要每次创建项目都来设置maven仓库了。 1.先把项目全关了 2. 进入全局设置 3.设置maven的仓库就可以了

绝地求生PUBG都准备了但是一直不匹配怎么办

绝地求生PUBG&#xff0c;作为一款备受玩家喜爱的射击游戏&#xff0c;以其真实的战斗体验和策略性决策而著称。玩家们在游戏中需要熟悉地图、选择适合的装备和战斗方式&#xff0c;并与队友进行默契的团队合作&#xff0c;才能在战场上取得优势。最近很多玩家都开始下载游玩绝…

RedHat9 | kickstart无人值守批量安装

一、知识补充 kickstart Kickstart是一种用于Linux系统安装的自动化工具&#xff0c;它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。 kickstart的工作原理 Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数&#xff0c;…

昇思25天学习打卡营第17天|ChatGLM-6B聊天demo

一、简介&#xff1a; 本次实验&#xff0c;基于MindNLP和ChatGLM6B模型搭建一个小的聊天应用&#xff0c;ChatGLM6B 是基于 GLM-4 模型开发的开源对话机器人&#xff0c;拥有 62 亿个参数&#xff0c;能够进行自然流畅的语言交流。在对话中&#xff0c;ChatGLM6B 可以胜任文案…

实现原理:远程过程调用(RPC)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

破解在制品管理不透明难题

在快节奏的现代工业浪潮中&#xff0c;每一个细微的管理环节都直接关系到企业的竞争力与盈利能力。在车间生产中&#xff0c;在制品管理流程不透明是一个常见问题&#xff0c;它可能导致生产效率低下、成本增加、库存积压以及沟通障碍等负面影响。 在制品管理流程不透明&#x…

人员定位技术的行业应用,你有没有了解过?

在之前的文章中&#xff0c;新锐科创为大家讲述了&#xff0c;将人员定位技术实际应用于工厂人员定位的效果&#xff0c;大家感觉是不是有点新颖&#xff0c;那么&#xff0c;你又是否清楚人员定位技术的行业应用呢&#xff1f;如果你从来都没有了解过&#xff0c;建议看看本篇…

【EFK】efk 8收集docker容器日志测试

前言 目前&#xff0c;efk 全家桶已经更新到版本8 了&#xff0c;本章节我们使用8版本的elk搭建日志收集系统&#xff0c;了解它的配置运行过程&#xff0c;方便以后在更复杂的环境中更好的使用。 版本默认就是8最新的&#xff0c;也可以自己指定其他8的版本 elasticsearch: …

php简单商城小程序系统源码

&#x1f6cd;️【简单商城小程序】&#x1f6cd;️ &#x1f680;一键开启&#xff0c;商城搭建新体验&#x1f680; 你还在为繁琐的商城搭建流程头疼吗&#xff1f;现在&#xff0c;有了简单商城系统小程序&#xff0c;一切变得轻松又快捷&#xff01;无需复杂的编程知识&a…

Stable Diffusion美得令人心动亚洲女性真人模型、提示词分享!

前言 提示词1: 电影灯光 Prompt&#xff1a; xxmixgirl, a mysterious woman, fog, movie lights, 【colors】 theme, smiling 提示词&#xff1a;神秘女子&#xff0c;迷雾&#xff0c;电影灯光&#xff0c;【颜色】主题&#xff0c;微笑 颜色&#xff1a;可以指定一种或多种…

晨持绪电商:大学毕业生投资抖音网店怎么样

在这个数字化飞速发展的时代&#xff0c;传统的职业路径已不再是唯一的选择。对于充满激情和创意的大学毕业生来说&#xff0c;投资抖音网店或许是一个颇具前景的选择。 抖音作为一个流量巨大的社交媒体平台&#xff0c;为年轻人提供了一个展示自我、推广产品的绝佳舞台。与传统…

Kotlin/Android中执行网络请求

方式一&#xff1a;使用okhttp3 okhttp官网 okhttp3 github地址 打开build.gradle.kts文件加入依赖 dependencies {implementation("com.squareup.okhttp3:okhttp:4.9.0") }在IDEA的Gradle面板点击reload按钮便会自动下载jar 使用网络请求时需要把网络的权限打开&a…

Web缓存—Nginx和CDN应用

目录 一、代理的工作机制 二、概念 三、作用 四、常用的代理服务器 二.Nginx缓存代理服务器部署 1.在三台服务器上部署nginx 此处yum安装 2.准备测试界面 三、CDN概念及作用 1.CDN的工作过程 一、代理的工作机制 &#xff08;1&#xff09;代替客户机向网站请求数据…

echarts横向立体3D柱状图

实现原理&#xff1a;series中包含两个普通的柱状图bar&#xff0c;其宽度各占一半且设置间距barGap为0&#xff0c;再添加一个象形柱状图pictorialBar&#xff0c;symbol设为菱形diamond&#xff0c;调整其位置大小层级等数据以达到覆盖在柱状图顶部的立体效果。 运行效果&am…

找不到d3dcompiler43.dll如何修复,分享5种方法助你解决问题

电脑提示找不到d3dcompiler43.dll&#xff0c;这是一个常见的小问题&#xff0c;主要是由于该dll文件丢失所导致。在日常使用电脑的过程中&#xff0c;我们可能会遇到此类丢失问题。为了解决该问题&#xff0c;我们只需进行相关的文件修复操作即可。以下是几种常见的d3dcompile…

电子元器件基础知识总结

1.0 电阻 电阻的定义&#xff1a;导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快&#xff1f;电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚&#xff0c;移动的速度很慢&#xff0c;在电压足…

平安养老险蚌埠中心支公司开展“78奋力前行”健步走活动

7月4日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;蚌埠中心支公司组织员工在张公山公园开展“78奋力前行”健步走活动&#xff0c;传递保险行业的正能量&#xff0c;展现平安养老险的活力与风采。 平安养老险蚌埠中心支公司员工身着…

2024年7月最佳免费天气API接口推荐

在我们的日常生活中&#xff0c;天气扮演着一个至关重要的角色&#xff0c;它影响着我们的情绪、健康、日常安排和商业决策。无论是计划一次户外活动、安排农作物种植&#xff0c;还是确保旅行安全&#xff0c;天气信息的准确性和及时性至关重要。随着技术的进步&#xff0c;天…