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

算法——滑动窗口(day6)

1004.最大连续1的个数 ||| 

1004. 最大连续1的个数 III - 力扣(LeetCode)

题目解析:

这道题如果能转化为滑动窗口的话就会很简单,因为我们如果尝试去把0翻转为1再计数的话等到第2轮又得重新翻转回来,费时费力~

那么我们不妨默认就把0当作1,选中一段区间只要里面0的个数不超过k那就可以了。这样就把问题转化为求0的个数不超过k的最长子数组,妥妥用滑动窗口。

老规矩,我们先来用暴力找找灵感:

需要列举的有点多,不过也有很多可优化的空间~


算法解析:

其实当我们转换为滑动窗口后相信看过我前边博客的友友们肯定都知道了,所以我们废话不多说。

在right不断遍历的过程中遇到0就记录其个数,等到不满足条件(sum>k)时说明在它之前已经找到最长子数组了。开始新一轮的寻找,这时候我们的right不用再回来遍历,因为之前都已经遍历并记录在sum中了,所以留在原位移动left即可。

 滑动窗口流程:

滑动窗口的两个指针移动规律也很简单:

  • right 遇1——> right++
  • right 遇0——> sum++,right++
  • left 遇1——> left++
  • left 遇0——> sum--,left++

代码: 

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int n = nums.size();int sum = 0;int ret = INT_MIN;for (int left = 0, right = 0; right < n; right++){//扩充窗口if (nums[right] == 0){sum++;}//判断,若sum<=k,到下一循环继续扩充//若sum>k,缩小窗口while (sum > k){if (nums[left] == 0){sum--;}left++;}//更新长度ret = max(ret, right - left + 1);}return ret;}
};

1658.将x减到0的最小操作数 

 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode)

题目解析:

这道题从正面来做会很难,因为你要不断考虑是从左边选数还是从右边选数。那么我们不如从另外一个角度来思考这个问题~

首先我们要把通过移除左右两边数使得x==0转换为挑选出左右两区间使得里面的数之和为x.

但两段区间也还是麻烦,我们不妨去挑出处于两区间中间的连续区间。

我们只需要让这个连续区间里面的和为sum-x就可以了,再求出连续区间的长度len,最后n-len反推出真正的最小操作数。


算法解析:

问题转换:求出总数之和为sum-x的最长连续子数组

只要t<a,我们就让right继续往后遍历直到出现t>=a的情况。

而在第二轮开始遍历的时候right其实不用去复位,因为在t>=a的那个节点前面的总和本来就是t<a,left前进一位只会让t更小。所以right是没必要复位的,留在原地就好了。

滑动窗口流程:

最后有一点小细节:

如果题目给的x比我们所有数组之和还大,得特殊处理~ 

代码:

class Solution {
public:int minOperations(vector<int>& nums, int x) {int len = -1;int n = nums.size();int sum = 0;for (int i : nums){sum += i;}//遍历连续数组之和int target = 0;//连续段的期望数值int a = sum - x;//细节处理if (a < 0) return -1;for (int left = 0, right = 0; right < n; right++){//扩充窗口target += nums[right];//判断,只要target>a就缩小窗口,反之就进行下一轮的扩充while (target > a){//缩小窗口target -= nums[left++];}//只有达到期望数值才可以记录长度if (target == a){len = max(len, right - left + 1);}}//没有达到期望数值,说明找不到if (len == -1){return -1;}else{return n - len;}}
};

相关文章:

算法——滑动窗口(day6)

1004.最大连续1的个数 ||| 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题如果能转化为滑动窗口的话就会很简单&#xff0c;因为我们如果尝试去把0翻转为1再计数的话等到第2轮又得重新翻转回来&#xff0c;费时费力~ 那么我…...

推荐一款基于Spring Boot 框架开发的分布式文件管理系统,功能齐全,非常便捷(带私活源码)

前言 在数字化时代&#xff0c;文件管理是企业和个人用户的基本需求。然而&#xff0c;现有的文件管理系统往往存在一些痛点&#xff0c;如存储空间有限、文件共享困难、缺乏在线编辑功能、移动端适配性差等。这些问题限制了用户在不同设备和场景下的文件处理能力。 为了解决…...

Mysql-查询

1.基本查询 //查询所有内容 select * from 表名;//查询指定字段 select 字段1&#xff0c;字段2&#xff0c;字段3.....from 表名;//查询时给字段起别名 select 字段1 as 别名1 , 字段2 as 别名2 ... from 表名&#xff1b;//去重查询 select distinct 字段列表 from 表名; …...

广东科学技术职业学院计算机学院领导一行莅临泰迪智能科技参观交流

7月17日&#xff0c;广东科学技术职业学院计算机学院副院长张军、计算机学院副书记吴国庆、计算机学院大数据教学部部长谢文达、科技与校企合作部副部长黄相杰、科技与校企合作部副部长吴胜兵莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流&#xff0c;泰迪智能科技…...

exo 大模型算力共享;Llama3-70B是什么

目录 exo 大模型算力共享 exo框架的特点 如何使用exo框架 注意事项 结论 Llama3-70B是什么 一、基本信息 二、技术特点 三、性能与应用 四、未来发展 exo 大模型算力共享 exo框架的特点 异构支持:支持多种不同类型的设备,包括智能手机、平板电脑、笔记本电脑以及高…...

测试——Junit

内容大纲: 常用的五个注解 测试用例顺序指定 参数化 测试套件 断言 1. 常用的五个注解 1.1 Test 通常情况下,我们输入要写在main方法下,此时我想直接输出: Test void Test01(){System.out.println("第一个测试用例"); } 1.2 BeforeAll AfterAll BeforeALL在Tes…...

BUG ImportError: cannot import name ‘QAction‘ from ‘PySide6.QtWidgets‘

BUG ImportError: cannot import name ‘QAction’ from ‘PySide6.QtWidgets’ 环境 PySide6 6.7.2详情 在参考 PyQt5 的代码写 Pyside6 的右键菜单时遇到的错误。 错误代码 from PySide6.QtWidgets import QAction错误原因&#xff1a; 在PySdie6中&#xf…...

对某次应急响应中webshell的分析

文章前言 在之前处理一起应急事件时发现攻击者在WEB应用目录下上传了webshell&#xff0c;但是webshell似乎使用了某种加密混淆手法&#xff0c;无法直观的看到其中的木马连接密码&#xff0c;而客户非要让我们连接webshell来证实此文件为后门文件且可执行和利用(也是很恼火&a…...

Vue3新特性

Vue3新特性 1、Composition API1.1 什么是 Composition API1.2 常用 Composition API1.2.1 setup1.2.2 ref1.2.3 reactive1.2.4 computed1.2.5 watchEffect、watchPostEffect、watchSyncEffect1.2.6 watch 2、生命周期2.1 Vue3生命周期钩子2.2 vue2 和 vue3 关于生命周期的对比…...

一套功能齐全、二开友好的即时通讯IM工具,提供能力库和UI库,支持单聊、频道和机器人(附源码)

前言 在当今数字化时代&#xff0c;即时通讯(IM)和实时音视频(RTC)功能已成为众多应用的标配。然而&#xff0c;现有的解-决方案往往存在一些痛点&#xff0c;如架构落后、成本高昂、数据安全性和隐私保护不足&#xff0c;以及二次开发和部署的复杂性。 为了解决这些问题&…...

MySQL:JOIN 多表查询

多表查询 在关系型数据库中&#xff0c;表与表之间是有联系的&#xff0c;它们通过 外键 联系在一起&#xff0c;所以在实际应用中&#xff0c;经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 MySQL多表查询是数据库操作中非常重要的一部分&#xff0c;它允许你…...

【机器学习】必会算法模型之:一文掌握 密度聚类,建议收藏。

密度聚类 1、引言2、密度聚类2.1 定义2.2 核心原理2.3 实现步骤2.4 算法公式2.5 代码示例 3、总结 1、引言 在机器学习的无监督学习领域&#xff0c;聚类是一项基础而重要的任务。 聚类算法通过将数据点分组&#xff0c;使同一组内的数据点具有更大的相似性&#xff0c;而组间…...

代码:前端与数据库交互的登陆界面

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>登录</title> </head> <body>…...

发电机基础知识:负载组

什么是发电机负载组&#xff1f; 简单地说&#xff0c;负载组是一种可以产生人工电力负载的设备&#xff0c;用于测试发电机并验证发电机组的性能&#xff0c;包括相关组件&#xff0c;以确保通过使发电机发动机达到适当的工作温度和压力来满足适当的负载。 它是如何工作的&a…...

内网安全:各类密码的抓取

Mimikatz在线读取SAM文件 离线读取SAM文件 在线读取lsass进程 离线读取lsass进程 BrowserGhost浏览器密码抓取 Sharp-HackBrowserData浏览器密码抓取 SharpDecryptPwd数据库密码抓取 LaZagne各类密码的抓取 Windows其他类型抓NTLM Hash工具 sam文件和lsass进程就是Wind…...

前端面试题汇总2

1. CSS 中两个 .class1 .class2 从哪个开始解析 在 CSS 中&#xff0c;选择器 .class1 .class2 表示所有 class 为 class1 的元素中的 class 为 class2 的子元素。浏览器解析这个选择器时&#xff0c;从右向左解析。也就是说&#xff0c;浏览器首先找到所有 class 为 class2 的…...

分布式服务框架zookeeper+消息队列kafka

一、zookeeper概述 zookeeper是一个分布式服务框架&#xff0c;它主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a;命名服务&#xff0c;状态同步&#xff0c;配置中心&#xff0c;集群管理等。 在分布式环境下&#xff0c;经常需要对应用/服…...

服务攻防-应用协议cve

Cve-2015-3306 背景&#xff1a; ProFTPD 1.3.5中的mod_copy模块允许远程攻击者通过站点cpfr和site cpto命令读取和写入任意文件。 任何未经身份验证的客户端都可以利用这些命令将文件从文件系统的任何部分复制到选定的目标。 复制命令使用ProFTPD服务的权限执行&#xff0c;…...

Springcloud之gateway的使用详解

官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/ 1.网关入门 helloword 网关不依赖start-web 导入的pom&#xff1a; <!--gateway--> <dependency><groupIdorg.springframework.cloud</groupId><arti…...

中望CAD 建筑 v2024 解锁版下载、安装教程 (超强的CAD三维制图)

前言 中望CAD建筑版是一款国产CAD制图软件&#xff0c;专注于建筑设计领域。中望CAD建筑版拥有丰富多样的建筑图块和图案&#xff0c;完美兼容各类建筑图纸。同时&#xff0c;它提供了绘图标准规范&#xff0c;使绘图更加规范和专业。更值得一提的是&#xff0c;该软件还具备智…...

windows edge自带的pdf分割工具(功能)

WPS分割pdf得会员&#xff0c;要充值&#xff01;网上一顿乱找&#xff0c;发现最简单&#xff0c;最好用&#xff0c;免费的还是回到Windows。 Windows上直接在edge浏览器打开PDF&#xff0c;点击 打印 按钮,页面下选择对应页数 打印机 选择 另存为PDF&#xff0c;然后保存就…...

HTML5实现好看的天气预报网站源码

文章目录 1.设计来源1.1 获取天气接口1.2 PC端页面设计1.3 手机端页面设计 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4…...

比较(八)利用python绘制指示器

比较&#xff08;八&#xff09;利用python绘制指示器 指示器&#xff08;Indicators&#xff09;简介 指示器是一系列相关图的统称&#xff0c;主要用于突出展示某一变量的实际值与目标值的差异&#xff0c;例如常见的数据delta、仪表盘、子弹图、水滴图等。 快速绘制 基于p…...

【体外诊断】ARM/X86+FPGA嵌入式计算机在医疗CT机中的应用

体外诊断 信迈科技提供基于Intel平台、AMD平台、NXP平台的核心板、2.5寸主板、Mini-ITX主板、4寸主板、PICO-ITX主板&#xff0c;以及嵌入式准系统等计算机硬件。产品支持GAHDMI等独立双显&#xff0c;提供丰富串口、USB、GPIO、PCIe扩展接口等I/O接口&#xff0c;扩展性强&…...

力扣 28找到字符串中第一个匹配项的下标 KMP算法

思路&#xff1a; 朴素匹配有很多步骤是多余的 KMP算法能够避免重复匹配 KMP算法主要是根据子串生成的next数组作为回退的依据&#xff0c;它记录了模式串与主串(文本串)不匹配的时候&#xff0c;模式串应该从哪里开始重新匹配。 这里讲一下为什么用模式串的最大公共前后缀…...

JavaScript(10)——匿名函数

匿名函数 没有名字的函数&#xff0c;无法直接使用。 使用方式: 函数表达式立即执行函数 函数表达式 将匿名函数赋值给一个变量&#xff0c;并且通过变量名称进行调用 let fn function(){ 函数体 } 调用&#xff1a; fn() 立即执行函数 语法&#xff1a; (function () {…...

图片上传成功却无法显示:静态资源路径配置问题解析

1、故事的背景 最近&#xff0c;有个学弟做了一个简单的后台管理页面。于是他开始巴拉巴拉撘框架&#xff0c;写代码&#xff0c;一顿操作猛如虎&#xff0c;终于将一个简单的壳子搭建完毕。但是在实现功能&#xff1a;点击头像弹出上传图片进行头像替换的时候&#xff0c;卡壳…...

【转盘案例-弹框-修改Bug-完成 Objective-C语言】

一、我们来看示例程序啊 1.旋转完了以后,它会弹一个框,这个框,是啥, Alert 啊,AlertView 也行, AlertView,跟大家说过,是吧,演示过的啊,然后,我们就用iOS9来做了啊,完成了以后,我们要去弹一个框, // 弹框 UIAlertController *alertController = [UIAlertContr…...

Perl 基础语法

Perl 基础语法 Perl 是一种高级、解释型、动态编程语言&#xff0c;广泛用于CGI脚本、系统管理、网络编程、以及其他领域。Perl 以其强大的文本处理能力和简洁的语法而闻名。本文将详细介绍 Perl 的基础语法&#xff0c;帮助读者快速入门。 1. Perl 变量和数据类型 1.1 变量…...

【嵌入式开发之标准I/O】二进制文件的读写及实验

文本文件和二进制的区别 文本文件和二进制文件的区别主要在于它们的编码方式和数据组织方式。‌ 编码方式&#xff1a;‌文本文件是基于字符编码的文件&#xff0c;‌常见的编码有ASCII编码、‌UNICODE编码等。‌这些编码将字符映射到特定的二进制值&#xff0c;‌使得字符可以…...

做网站用python好吗/抖音视频seo霸屏

一般来说有这样的需求&#xff0c;我已经有了一个图片元素&#xff0c;在这个元素的周围会有一个动态显示的对象&#xff0c;我要去做一个点击或者是hover又或者是单纯把这个对象图片save到本地&#xff0c;留做下个页面点击的对象&#xff0c;在这种情况下就可以用到sikuli来解…...

北京网站建设知名公司/软文广告怎么写

目录上机常用代码 (1) 输入代码(2) 矩阵乘法 (np.dot(A, B))(2.2) 矩阵转置(2.3) 获得矩阵对角线元素(3) 生成 nxn 的 空矩阵(4) 字典排序(5) 统计列表中所有元素出现的频率(6) list和set相互转换(7) 列表转整数(8) 数字字符串 转整数(9) 读取二进制文件(9.1) 读二进制文件(10)…...

深圳盐田建设交易中心网站/优化推广公司哪家好

第4章 类和接口 类和接口是Java程序设计语言的核心&#xff0c;它们也是Java语言的基本抽象单元。Java语言提供了许多强大的基本元素&#xff0c;供程序员用来设计类和接口。 13. 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块&#xff0c;最重要的因素在于…...

企业做的网站推广方案的步骤/西安seo诊断

共回答了18个问题采纳率&#xff1a;88.9%F9/5C32 或者 C(F-32)*5/9注&#xff1a;F表示华氏温度,C表示摄氏温度C语言编程如下&#xff1a;main(){float x;char zh;printf("input target temperture(C or F) and numbern");scanf("%c%f",&zh,&x);s…...

wordpress网站 添加微信/一手渠道推广平台

首先简述一下自动化测试对于数据库的应用场景&#xff1a;无论在接口自动化还是UI自动化的测试中&#xff0c;我们都需要准备一些测试数据&#xff0c;类似于账号信息。比如我们需要一个未注册的手机号&#xff0c;我们不能保证给出的测试数据是未注册的&#xff0c;这个时候就…...

网站权重怎么查询/百度app大全

MySQL的图形化界面的基本使用方法 一、首先将java.war放进tomact安装包下面的webapps下&#xff0c;然后运行bin/startup.bat,然后查看webapps下面时候新生成了一个和你的war包名相同的文件夹。二、编辑新生成的文件下的WEB-INF/classes/db-config.properties 原图如图&#xf…...