算法练习:1004. 最大连续1的个数 III

题目链接:1004. 最大连续1的个数 III。

题目要求,给定一个数组,这个数组里面只有0或1,然后计算有多少个连续的1的最大长度,同时给了一个条件就是,可以把k个0变成1,然后来计算长度。

暴力解法:枚举每一个子数组,记录连续为1的长度,同时用一个计数器cut来统计0的个数。

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int n = nums.size();int sum = INT_MIN;for(int i = 0;i < n;i++){int cut = 0;int sum1 = 0;for(int j = i;j < n;j++){if(nums[j] == 0){cut++;}if(cut == k+1){break;}sum1++;}sum = sum1 > sum ? sum1 : sum;}return sum;}
};

但是暴力解法会超时!!!

在暴力解法前提下进行对代码的优化:

  • 通过定义两个指针来控制,left固定在第一个位置,right进行移动,定义cut当计数器
  • 如果right对应值为1,则无视,直接++
  • 如果right对应值为0,则cut++,right也++
  • 判断,如果cut > k,则开始移动left
  • 如果left对应值为1,无视,直接++
  • 如果对应值为0,则cut--,left也++
  • 判断完就进行更新长度

为什么判断cut > k后要进行移动left,而right不动,因为left到right之间0的个数已经超过k,此时right在回到left位置重新进行检测长度,没有必要,因为重新检测的长度肯定比之前长度短,所以只需要更新left,更新到cut=k的位置,然后再进行移动right。

这样同向双指针操作叫做滑动窗口。

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int left = 0,right = 0,cut = 0;int n = nums.size();int ret = 0;while(left<n && right < n){if(nums[right] == 0) cut++;while(cut > k){if(nums[left] == 0) cut--;left++;}ret = max(ret , right - left + 1);right++;}return ret;}
};

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

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

相关文章

Unity网络开发基础(part5.网络协议)

目录 前言 网络协议概述 OSI模型 OSI模型的规则 第一部分 物理层 数据链路层 网络层 传输层 第二部分 ​编辑 应用层 表示层 会话层 每层的职能 TCP/IP协议 TCP/IP协议的规则 TCP/IP协议每层的职能 TCP/IP协议中的重要协议 TCP协议 三次握手 四次挥手 U…

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接 LeetCode_1767 二、题目描述 表&#xff1a;Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…

JavasScript 的对象事件的处理程序

1、鼠标事件 常用的鼠标事件有MouseDown、MouseUp、MouseMove、MouseOver、MouseOut、Click、Blur及Focus等事件。 mousedown&#xff1a;按下鼠标键时触发 mouseup&#xff1a;抬起鼠标键时触发 click&#xff1a;单击鼠标时触发 dblclick&#xff1a;在同一个元素上双击鼠标…

华为云安装docker

docker_docker-compose_install: 代替官网的一键安装脚本&#xff0c;使用docker包进行离线安装 bash <(curl -sL https://raw.githubusercontent.com/1scripts/docker_docker-compose_install/main/quick_install.sh) 华为镜像&#xff1a; https://console.huaweicloud.…

如何实用穿山甲APP搭建你的广告联盟?

在当下蓬勃兴盛的移动互联网范畴&#xff0c;广告联盟穿山甲无疑堪称一个具备深远影响力的关键平台。它系由在科技领域声名远扬的字节跳动悉心打造并予以推出&#xff0c;其创建的初衷便是矢志为众多的开发者和广告主精心构筑一个高效能、精准化且极具价值的广告投放与变现服务…

【Python实战案例】爬虫项目实例(附赠源码)

文章目录 声明安装必要的库项目结构技术细节小结 声明 请您遵守网站的robots文件规定&#xff0c;本文目的只是做学习交流使用&#xff0c;包括多个模块&#xff0c;例如数据存储、日志记录、错误处理、多线程或异步请求 安装必要的库 pip install requests beautifulsoup4 sq…

PL/SQL developer debug 方法及存储过程等

文章目录 打开 PL/SQL&#xff0c;找到 fun右键 fun&#xff0c;选择【添加调试信息(U)】右键 fun&#xff0c;选择【查看(O)】在 fun 中需要调试的位置打上断点右键 fun&#xff0c;选择【测试(X)】点击执行再点击执行进入断点 执行结果 打开 PL/SQL&#xff0c;找到 fun 右键…

利用 Avalonia UI 构建 Blazor 混合应用程序

Blazor 是一个 .NET 前端框架&#xff0c;用于仅使用 .NET 技术构建 Web 应用程序。2021 年&#xff0c;Blazor 扩展到桌面端&#xff0c;推出了 Blazor Hybrid&#xff08;混合&#xff09;&#xff0c;使开发者可以在桌面平台上使用已有的技能。 Blazor 混合应用程序是传统的…

ELK-ELK基本概念_ElasticSearch的配置

文章目录 一、什么是ELK&#xff1f;有什么用&#xff1f;ELK是什么&#xff1f;ElasticsearchLogstashKibana ELK的作用 二、ElasticSearch的安装与基本配置为何需要依赖JDK&#xff1f;使用yum install java-11-openjdk和使用Oracle官网提供的jdk的rpm包安装JDK的区别 参考资…

怎么查看navicat的数据库密码

步骤1:打开navicat连接数据库工具&#xff0c;顶部的文件栏-导出结果-勾选导出密码-导出 步骤2&#xff1a;导出结果使用NotePad或文本打开&#xff0c;找到&#xff0c;数据库对应的的Password"995E66F64A15F6776“”的值复制下来 <Connection ConnectionName"…

linux驱动-i2c子系统框架学习(1)

可以将整个 I2C 子系统用下面的框图来描述&#xff1a; 可以将上面这一 I2C 子系统划分为三个层次&#xff0c;分别为用户空间、内核空间和硬件层&#xff0c;内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层&#xff0c; 本篇主要内容就是介绍 I2C 子系统框架中…

基于SSM的企业管理系统(源码+lw+调试+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【金融风控】相关业务介绍及代码详解

金融风控相关业务介绍 【了解】项目整体介绍 1.风控业务和风控报表</span> 零售金融产品 相关的指标 风控建模流程 ​ #2.特征工程 特征构造 特征筛选 ​ 3.评分卡模型构建 逻辑回归 集成学习 XGBoost LightGBM 模型评估 ​ #4.样本不均衡问题/异常点检测 【了解】今日…

Late Chunking×Milvus:如何提高RAG准确率

01. 背景 在RAG应用开发中&#xff0c;第一步就是对于文档进行chunking&#xff08;分块&#xff09;&#xff0c;高效的文档分块&#xff0c;可以有效的提高后续的召回内容的准确性。而对于如何高效的分块是个讨论的热点&#xff0c;有诸如固定大小分块&#xff0c;随机大小分…

蓝桥杯备赛(持续更新)

16届蓝桥杯算法类知识图谱.pdf 1. 格式打印 %03d&#xff1a;如果是两位数&#xff0c;将会在前面添上一位0 %.2f&#xff1a;会保留两位小数 如果是long&#xff0c;必须在数字后面加上L。 2. 进制转化 2.1. 十进制转任意进制&#xff1a; 十进制转任意进制时&#xff…

责任链模式 Chain of Responsibility

1 意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 2 结构 Handler 定义一个处理请求的接口;(可选)实现后继链。 ConcreteHandler …

SQL Server 2008 R2 详细安装教程及错误解决教程

SQL Server 2008 R2 详细安装教程及错误解决教程 文章目录 SQL Server 2008 R2 详细安装教程及错误解决教程1.装载或解压ISO文件2. 运行setup程序3. 下载并安装.NET Framework3.54.选择全新安装或向现有安装添加功能5.输入秘钥同意条款6.选择安装类型7.设置角色8.功能选择9.实例…

国际版JAVA同城打车源码同城服务线下结账系统源码适配PAD支持Android+IOS+H5

架构分析 导航栏&#xff1a;位于界面上方&#xff0c;包含了“数据中心”、“消息”、“用户中心”等主要功能模块的入口&#xff0c;方便用户快速访问。左侧功能模块&#xff1a;在界面的左侧&#xff0c;以列表形式展示了多个功能模块&#xff0c;如“数据中心”、“消息中…

营销页面设计:精准触达目标群体的艺术

在当今数字化的商业世界中&#xff0c;营销页面设计扮演着至关重要的角色。成功的营销页面设计不仅仅是美观那么简单&#xff0c;它需要结合场景设计、精准定位目标群体、巧妙运用设计元素以及精心策划的色彩搭配&#xff0c;共同编织出一张引人入胜的视觉网络。 今天就以洋河…

gdb和make工具

gdb工具&#xff1a; GDB的主要功能 断点设置&#xff1a;允许开发者在特定的代码行设置断点&#xff0c;当程序执行到该行时会自动暂停&#xff0c;方便开发者进行调试和分析。 变量查看与修改&#xff1a;在程序运行过程中&#xff0c;可以查看和修改变量的值&#xff0c;以…