【优选算法系列】【专题二滑动窗口】第二节.1004. 最大连续1的个数 III和1658. 将 x 减到 0 的最小操作数

文章目录

  • 前言
  • 一、最大连续1的个数 III
  •       1.1 题目描述
  •       1.2 题目解析
  •            1.2.1 算法原理
  •            1.2.2 代码编写
  • 二、将 x 减到 0 的最小操作数
  •       2.1 题目描述
  •       2.2 题目解析
  •            2.2.1 算法原理
  •            2.2.2 代码编写
  • 总结


前言

一、最大连续1的个数 III

1.1 题目描述

描述:

给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。


提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1
  • 0 <= k <= nums.length

示例1:


示例2:


1.2 题目解析

1.2.1 算法原理(无思考)

算法思路:

不要去想怎么翻转,不要把问题想的很复杂,这道题的结果无非就是一段连续的1中间塞了k个0而已;

因此,我们可以把问题转化成:

求数组中一段最长的连续区间,要求这段区间内0的个数不超过k 个。

所以,既然是连续区间,可以考虑使用「滑动窗口」来解决问题


解题步骤:
步骤一:

初始化一个大小为2的数组就可以当做哈希表hash了;初始化一些变量 left = 0,right = 0 , ret = 0;

步骤二:

当right小于数组大小的时候,一直进行下列循环:

  • i、让当前元素进入窗口,顺便统计到哈希表中;
  • ii、检查的个数是否超标: 如果超标,依次让左侧元素滑出窗口,顺便更新哈希表的值,直到0的个数恢复正常。
  • iii、程序到这里,说明窗口内元素是符合要求的,更新结果;
  • iv、right++,处理下一个元素;

步骤三:

循环结束后,ret存的就是最终结果。


1.2.2 代码编写


二、将 x 减到 0 的最小操作数

2.1 题目描述

描述:

给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。

如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。


提示:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^4
  • 1 <= x <= 10^9

示例1:


示例2:


示例3:


2.2 题目解析

2.2.1 算法原理(无思考)

算法思路:

题目要求的是数组「左端+右端」两段连续的、和为×的最短数组,信息量稍微多一些,不易理清思路;

我们可以转化成求数组内一段连续的、和为sum(nums) - x的最长数组。

此时,就是熟悉的「滑动窗口」问题了。


解题步骤:

步骤一:

转化问题:求target = sum(nums) - ×。如果 target < 0,问题无解;

步骤二:

初始化左右指针l = 0,r = 0(滑动窗口区间表示为[l,r),左右区间是否开闭很重要,必须设定与代码一致),记录当前滑动窗口内数组和的变量sum = 0,记录当前满足条件数组的最大区间长度maxLen = -1 ;

步骤三:

当r小于等于数组长度时,一直循环:

情况i:如果sum < target,右移右指针,直至变量和大于等于target,或右指针已经移到

头;

情况ii:如果sum > target,右移左指针,直至变量和小于等于target,或左指针已经移到

头;

情况iii:如果经过前两步的左右移动使得sum == target,维护满足条件数组的最大长度,并让下个元素进入窗口;

步骤四:

循环结束后,如果maxLen的值有意义,则计算结果返回;否则,返回-1。


2.2.2 代码编写

总结

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

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

相关文章

【halcon】halcon 函数文件 以及 脚本引擎如何调用外部函数文件 上篇

前言 halcon有几种文件&#xff1a; 本地程序函数&#xff08;.hdev&#xff09;外部函数文件&#xff08;.hdvp)库函数(.hdp) 说多了容易混淆&#xff0c;今天就说&#xff0c;我觉得最有用的&#xff1a;外部函数文件&#xff08;.hdvp) 步骤 先写一段halcon脚本&#x…

宝塔部署QQ机器人,提示OpenSSL 1.0.2k-fips 26 Jan 2017

1、报错预览 Traceback (most recent call last):File "/www/wwwroot/python/bot-one/main.py", line 5, in <module>import requestsFile "/www/wwwroot/python/bot-one/343ae0eb0d491a10a1a00c0621b03ed0_venv/lib/python3.9/site-packages/requests/_…

粤嵌实训医疗项目(小组开发)--day05

目录 一、医生功能模块 ------------前端实现------------ ------------后端接口------------ 功能一&#xff1a;分页查询医生基础信息&#xff08;介绍MybatisPlus如何使用分页&#xff09; 功能二&#xff1a;根据搜索栏名称查找对应医生&#xff08;讲解自定义查询集&…

【Cocos新手进阶】父级预制体中的数据列表,在子预制体中的控制方法!

本篇文章主要讲解&#xff0c;cocos中在预制体操作过程中&#xff0c;父级预制体生成的数据列表中&#xff0c;绑定了子预制体中的事件&#xff0c;在子预制体的时间中如何控制上级列表的具体操作教程。 日期&#xff1a;2023年11月10日 作者&#xff1a;任聪聪 一、实际效果情…

Pytorch实战教程(三)-构建神经网络

0. 前言 我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1. PyTorch 构建神经网…

k8s-Pod控制器

一、Pod控制器 1.Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启…

企业安全—三保一评

0x00 前言 本篇主要是讲解三保一评的基础知识&#xff0c;以及对为什么要进行这些内容的原因进行总结。 0x01 整体 1.概述 三保分别是&#xff0c;分保&#xff0c;等保&#xff0c;关保。 分保就是指涉密信息系统的建设使用单位根据分级保护管理办法和有关标准&#xff0c…

[MT8766][Android12] 系统设置隐藏休眠时间和锁屏选项

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MT8766 版本: Android 12 kernel: msm-4.19 问题描述 最近开发的一款智能盒子&#xff0c;没有屏幕显示&#xff1b;所以&#xff0c;系统默认设置成永不休眠以及默认不锁屏&#xff1b;但是&#xff0c;…

QComboBox的信号

QComboBox的最重要的信号activated和currentIndexChanged 两个信号的区别&#xff1a; QComboBox::activated信号发射在用户打开选择了选项后&#xff0c;即便选项与当前选项一致&#xff0c;也会发射该信号 QComboBox::currentIndexChanged信号只在选项发生了变化的时候 这…

JAVA 读取文件 写入文件 复制文件

读取 写入 复制 文件 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class text6 {public static void main(String[] args) {// System.out.println(fiel_read("file\\a.txt&qu…

植物补光灯,哪种效果好?

室内种植物有诸多好处&#xff1a;空间装饰、吸收有害物质、释放氧气&#xff0c;使室内空气更加清新&#xff1b;植物的蒸腾作用可以增加室内的湿度&#xff0c;改善秋冬季干燥的室内环境&#xff0c;可谓是天然的加湿器。 然而由于缺乏太阳光&#xff0c;在室内养植并不是一…

服装展示服务预约小程序的内容如何

互联网电商深入&#xff0c;很多服装商家开始线上卖货经营、会员管理及私域营销等&#xff0c;这也是当今商家们的一个优选项&#xff0c;当然除了直接卖货以外&#xff0c;展示和预约、客户交互也同样是不少商家需要的。 那么商家通过服装展示预约小程序能够实现什么效果呢&a…

被腾讯云感动哭了,5年内都不用再买服务器了!

我一直在寻找一个稳定、高效、可靠的云服务器提供商&#xff0c;以支持我的个人网站和业务。最近&#xff0c;我发现了腾讯云&#xff0c;它提供了一款非常优惠的2核4G云服务器&#xff0c;而且可以用超低的价格一次性购买5年的服务期限&#xff01;看到这么贴心的腾讯云&#…

小程序订单中心path设置本次审核不通过,审核原因:小程序尚未发布,无法审核。

小程序尚未发布&#xff0c;无法审核。 先按照这篇文章把小程序审核通过&#xff0c;小程序版本审核未通过&#xff0c;需在开发者后台「版本管理—提交审核——小程序订单中心path」设置订单中心页path&#xff0c;请设置后再提交代码审核 小程序审核通过后&#xff0c;发布…

React进阶之路(三)-- Hooks

文章目录 Hooks概念理解什么是HooksHooks解决了什么问题 useState基础使用状态的读取和修改组件的更新过程使用规则回调函数作为参数 useEffect什么是函数副作用基础使用依赖项控制执行时机清理副作用发送网络请求 useRefUseContext Hooks概念理解 什么是Hooks Hooks的本质&am…

js学习笔记

目录 delete__dirname和__filenameImport、Require、interopRequireDefaultrequireimportinteropRequireDefault引用出现的一些问题循环引用引用文件的变量作用域引入导致的路径错误问题 defer和async严格模式undefined和nullparseInt等转数子的方法&#xff0c;如果参数是数字…

springboot整合Oauth2

Spring Boot 可以很容易地实现 OAuth2 认证&#xff0c;下面是一个简单的整合 OAuth2 的步骤&#xff1a; 添加 Maven 依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client<…

JAVA 读取写入文件

读取 写入 文件import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class text6 {public static void main(String[] args) {System.out.println(fiel_read("file\\a.txt"));String str&qu…

力扣每日一道系列 --- LeetCode 88. 合并两个有序数组

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 思路1&#xff1a;暴力求解思路2&#xff1a;原地合并 LeetCode 88. 合并两个有序数组…

Java Agent - 应用程序代理-笔记

Java Agent - 应用程序代理-笔记 概述说明 Java Agent 又叫做 Java 探针&#xff0c;该功能是 Java 虚拟机提供的一整套后门&#xff0c;通过这套后门可以对虚拟机方方面面进行监控与分析&#xff0c;甚至干预虚拟机的运行。 是在 JDK1.5 引入的一种可以动态修改 Java 字节码…