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

【算法集训】基础算法:滑动窗口

定义一个快慢指针,用于截取数组中某一段信息。同时可以改变快慢指针的值来获取结果,这个过程比较像滑动。

1493. 删掉一个元素以后全为 1 的最长子数组

  • 定义快慢指针
  • 快指针先走,如果到了第二个0上的时候。前面1的个数就是fast - slow - 1,但是为了后面的继续计算,需要将slow指针+1即可。
// 滑动窗口
int longestSubarray(int* nums, int numsSize) {// 定义快慢指针int slow = 0;int fast = -1;// 记录0的个数int zero = 0;// 最大长度int maxlen = 1;// 快指针走while(fast < numsSize - 1) {fast++;zero += !nums[fast];while(zero > 1) {zero -= !nums[slow];slow++;}if(fast - slow + 1 > maxlen) {maxlen = fast - slow + 1;}}return maxlen - 1;
}

1004. 最大连续1的个数 III

和上一题一样的,只不过将替换0的值增加为了k个。

int longestOnes(int* nums, int numsSize, int k) {// 定义快慢指针int slow = 0;int fast = -1;int zero = 0;  //记录0的个数int maxlen = 0; //最终的返回的最大长度// 快指针先走while(fast < numsSize - 1) {fast ++;zero += !nums[fast];while( zero > k) {zero -= !nums[slow];slow++;}if(maxlen < fast - slow + 1) {maxlen = fast - slow + 1;}}return maxlen;
}

2730. 找到最长的半重复子字符串

int longestSemiRepetitiveSubstring(char * s){int slow = 0;int fast = -1;int same = 0;int maxlen = 0;int len = strlen(s);// 快指针while(fast < len - 1) {fast++;// 如果快大于慢的话就可以看相邻的相等否了?if(fast - slow > 0) {// 如果相等则同样记录+1if(s[fast] == s[fast - 1]) {same++;}// 当大于1的时候就需要移动慢指针了while( same > 1 ) {if(s[slow] == s[slow + 1]) {--same;}slow ++;}}if(fast - slow + 1 > maxlen) {maxlen = fast - slow + 1;}}return maxlen;
}

相关文章:

【算法集训】基础算法:滑动窗口

定义一个快慢指针&#xff0c;用于截取数组中某一段信息。同时可以改变快慢指针的值来获取结果&#xff0c;这个过程比较像滑动。 1493. 删掉一个元素以后全为 1 的最长子数组 定义快慢指针快指针先走&#xff0c;如果到了第二个0上的时候。前面1的个数就是fast - slow - 1&a…...

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点 功能介绍头文件C文件运行过程 功能介绍 上面的代码实现了一个简单的 Qt 应用程序&#xff0c;其功能包括&#xff1a; 创建一个 MainWindow 类&#xff0c;继承自 QMainWindow&#xff0c;作为应用程序的…...

C语言TCP服务器模型 : select + 多线程与双循环单线程阻塞服务器的比较

观察到的实验现象: 启动三个客户端: 使用双循环阻塞服务器:只能accept后等待收发,同时只能与一个客户端建立连接,必须等已连接的客户端多次收发 明确断开后才能与下个客户端连接 使用IO多路复用select:可以同时接收所有的连接请求,并且连接状态一直是存活的,直到客户端关闭连…...

【数字IC/FPGA】手撕代码:模3检测器(判断输入序列能否被3整除)

今天我们来手撕一个常见的笔试题&#xff0c;使用的方法是三段式Moore状态机。 题目描述&#xff1a; 输入端口是串行的1bit数据&#xff0c;每个时钟周期进来一位新数据后&#xff0c;实时检查当前序列是否能整除3&#xff0c;若能则输出1&#xff0c;否则输出0。 例如&#…...

最小可行产品需要最小可行架构——可持续架构(三)

前言 最小可行产品&#xff08;MVP&#xff09;的概念可以帮助团队专注于尽快交付他们认为对客户最有价值的东西&#xff0c;以便在投入大量时间和资源之前迅速、廉价地评估产品的市场规模。MVP不仅需要考虑产品的市场可行性&#xff0c;还需要考虑其技术可行性&#xff0c;以…...

笔记: 数据结构与算法--时间复杂度二分查找数组

算法复杂度 不依赖于环境因素事前分析法 计算最坏情况的时间复杂度每一条语句的执行时间都按照t来计算 时间复杂度 大O表示法 n 数据量 ; f(n) 实际的执行条数当存在一个n0 , 使得 n > n0,并且 c * g(n) 恒> f(n) : 渐进上界(算法最坏的情况)那么f(n)的时间复杂度 …...

AI绘画教程:Midjourney使用方法与技巧从入门到精通

文章目录 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》二、内容介绍三、作者介绍&#x1f324;️粉丝福利 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》 一本书读懂Midjourney绘画&#xff0c;让创意更简单&#xff0c;让设计…...

Spring-事务管理

1、事务管理 1.1、回滚方式 默认回滚方式&#xff1a;发生运行异常时异常和error时回滚&#xff0c;发生受查(编译&#xff09;异常时提交。不过&#xff0c;对于受查异常&#xff0c;程序员也可以手工设置其回滚方式 1.2、事务定义接口 1.2.1、事务隔离级别常量 这些常量…...

MySql实战--为什么我的MySQL会“抖”一下

时的工作中&#xff0c;不知道你有没有遇到过这样的场景&#xff0c;一条SQL语句&#xff0c;正常执行的时候特别快&#xff0c;但是有时也不知道怎么回事&#xff0c;它就会变得特别慢&#xff0c;并且这样的场景很难复现&#xff0c;它不只随机&#xff0c;而且持续时间还很短…...

【蓝桥杯第十三届省赛B】(部分详解)

九进制转十进制 #include <iostream> #include<math.h> using namespace std; int main() {cout << 2*pow(9,3)0*pow(9,2)2*pow(9,1)2*pow(9,0) << endl;return 0; }顺子日期 #include <iostream> using namespace std; int main() {// 请在此…...

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…...

【Lazy ORM 框架学习】

Gitee 点赞关注不迷路 项目地址 快速入门 模块所属层级描述快照版本正式版本wu-database-lazy-lambdalambda针对不同数据源wu-database-lazy-orm-coreorm 核心orm核心处理wu-database-lazy-sqlsql核心处理成处理sql解析、sql执行、sql映射wu-elasticsearch-starterESESwu-hb…...

安科瑞路灯安全用电云平台解决方案【电不起火、电不伤人】

背景介绍 近年来 &#xff0c;随着城市规模的不断扩大 &#xff0c;路灯事业蓬勃发展。但有的地方因为观念、技术、管理等方面不完善 &#xff0c;由此引发了一系列安全问题。路灯点多面广 &#xff0c;一旦漏电就极容易造成严重的人身安全事故。不仅给受害者家庭带来痛苦 &am…...

MYSQL——索引概念索引结构

索引 索引是帮助数据库高效获取数据的排好序的数据结构。 有无索引时&#xff0c;查询的区别 主要区别在于查询速度和系统资源的消耗。 查询速度&#xff1a; 在没有索引的情况下&#xff0c;数据库需要对表中的所有记录进行扫描&#xff0c;以找到符合查询条件的记录&#…...

Linux(CentOS7)配置系统服务以及开机自启动

目录 前言 两种方式 /etc/systemd/system/ 进入 /etc/systemd/system/ 文件夹 创建 nginx.service 文件 重新加载 systemd 配置文件 ​编辑 配置开机自启 /etc/init.d/ 进入 /etc/init.d/ 文件夹 创建 mysql 文件 编写脚本内容 添加/删除系统服务 配置开机自启 …...

0 决策树基础

目录 1 绪论 2 模型 3 决策树面试总结 1 绪论 决策树算法包括ID3、C4.5以及C5.0等&#xff0c;这些算法容易理解&#xff0c;适用各种数据&#xff0c;在解决各种问题时都有良好表现&#xff0c;尤其是以树模型为核心的各种集成算法&#xff0c;在各个行业和领域都有广泛的…...

Linux速览(2)——环境基础开发工具篇(其一)

本章我们来介绍一些linux的常用工具 目录 一. Linux 软件包管理器 yum 1.什么是软件包? 2. 查看软件包 3. 如何安装软件 4. 如何卸载软件 5.yum补充 6. 关于 rzsz 二. Linux编辑器-vim使用 1. vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4. vim末行模式…...

AWS SES发送邮件时常见的错误及解决方法?

AWS SES发送邮件如何做配置&#xff1f;使用AWS SES发信的限制&#xff1f; 在使用AWS SES发送邮件时&#xff0c;可能会遇到一些常见的错误。AokSend将介绍一些常见的AWS SES发送邮件错误及其相应的解决方法&#xff0c;帮助用户更好地利用AWS SES进行邮件发送。 AWS SES发送…...

视频基础学习三——视频帧率、码率与分辨率

文章目录 前言一、介绍1.定义2.三者之间的关系 总结 前言 在之前的文章中详细介绍了一些关于图像的色彩与格式&#xff0c;而视频其实就是由一张张图片进行展示呈现出来的。 我们会经常说一段视频的质量好不好&#xff0c;而什么是视频的质量呢&#xff1f;博主的个人理解就是…...

Spring(详细介绍)

目录 一、简介 1、什么是Spring&#xff1f; 2、Spring框架的核心特性 3、优点 二、IOC容器 介绍 1、获取资源的传统方式 2、控制反转方式获取资源 3、DI 4、IOC容器在Spring中的实现 入门案例 1、创建Maven Module 2、引入依赖 3、创建HelloWorld类 4、在Spring的配…...

ARM Firmware Suite与Integrator开发板嵌入式开发指南

1. ARM Firmware Suite与Integrator开发板概述ARM Firmware Suite&#xff08;AFS&#xff09;是ARM架构下专为嵌入式系统开发设计的固件套件&#xff0c;在Integrator系列开发板上发挥着核心作用。这套工具链最初由ARM Limited在1999-2002年间开发&#xff0c;至今仍在许多传统…...

2026年AI模型API中转站大排名!解析各平台优势,为企业与开发者精准选型

2026年5月&#xff0c;在中国广州&#xff0c;随着AI大模型技术不断迭代并在各产业全面落地&#xff0c;企业级API中转服务市场已步入成熟竞争阶段。技术稳定性、场景适配度以及综合性价比成为企业选择API中转站时的核心考量因素。近日&#xff0c;行业第三方评测机构发布了《2…...

美政府AI主管:Anthropic 将在 18 个月内成为人类历史最有价值公司

Anthropic 已经成为人工智能革命中最成功的案例之一&#xff0c;但这或许还不是全部。风险投资家兼美国政府人工智能和加密货币沙皇大卫萨克斯在 All-In播客节目中提出了一个惊人的说法&#xff1a;Anthropic 不仅有望成为科技界最强大的公司&#xff0c;而且有望成为人类历史上…...

用1DCNN预测股票价格:一份基于TensorFlow/Keras的保姆级实战代码解析

用1DCNN预测股票价格&#xff1a;从数据预处理到模型优化的全流程实战 金融时间序列预测一直是量化分析领域的核心挑战之一。传统的统计方法如ARIMA在处理非线性关系时表现有限&#xff0c;而深度学习中的一维卷积神经网络(1DCNN)因其捕捉局部特征的能力&#xff0c;在股价预测…...

别再死记公式了!用Multisim仿真带你玩转反相/同相比例运算电路

用Multisim仿真解锁比例运算电路的实战奥秘 在电子工程的学习中&#xff0c;运算放大器电路一直是让初学者又爱又恨的内容。传统的学习方法往往从公式推导开始&#xff0c;要求学生死记硬背各种电路配置下的增益公式。但今天&#xff0c;我们要打破这种枯燥的学习方式——通过…...

如何快速掌握WindowResizer:终极窗口强制调整工具完整指南

如何快速掌握WindowResizer&#xff1a;终极窗口强制调整工具完整指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些顽固的固定尺寸窗口而烦恼吗&#xff1f;WindowRe…...

从‘能用’到‘好用’:给你的Vue+Element后台管理系统布局加点儿‘细节’

从‘能用’到‘好用’&#xff1a;VueElement后台管理系统的细节打磨指南 后台管理系统作为企业级应用的核心枢纽&#xff0c;其用户体验直接影响着运营效率和操作愉悦度。许多开发者在完成基础功能搭建后&#xff0c;常常陷入"能用但不好用"的困境——系统虽然跑得通…...

实战指南:从零开始掌握Visual C++运行库一键修复的高效用法

实战指南&#xff1a;从零开始掌握Visual C运行库一键修复的高效用法 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C运行库是Windows系统中至关重要的组…...

League-Toolkit:基于LCU API的英雄联盟客户端自动化工具深度解析

League-Toolkit&#xff1a;基于LCU API的英雄联盟客户端自动化工具深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是…...

别再只会用传统插值了!深入浅出图解DuDoNet双域网络,如何同时修复Sinogram和CT图像

双域网络革命&#xff1a;从DuDoNet到DuDoNet的医学影像伪影消除实战 医学影像领域长期被金属伪影问题困扰——当患者体内存在金属植入物时&#xff0c;CT扫描图像会出现辐射状条纹和带状阴影&#xff0c;严重影响诊断准确性。传统解决方案如同用创可贴处理内伤&#xff1a;图像…...