【滑动窗口】Leetcode 长度最小的子数组

题目解析

209. 长度最小的子数组
在这里插入图片描述


算法讲解

算法1:暴力枚举

枚举出所有和大于等于target的数组,然后求出其中长度最小的那一个

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {// 记录结果int ret = INT_MAX;int n = nums.size();// 枚举出所有满⾜和⼤于等于 target 的⼦数组[start, end]// 由于是取到最⼩,因此枚举的过程中要尽量让数组的⻓度最⼩// 枚举开始位置for (int start = 0; start < n; start++){int sum = 0; // 记录从这个位置开始的连续数组的和// 寻找结束位置for (int end = start; end < n; end++){sum += nums[end]; // 将当前位置加上if (sum >= target) // 当这段区间内的和满⾜条件时{// 更新结果,start 开头的最短区间已经找到ret = min(ret, end - start + 1);break;}}}// 返回最后结果return ret == INT_MAX ? 0 : ret;}
};

算法2:滑动窗口

从数组的起始位置开始,我们每一次+=上当前位置的nums[i],然后判断当前的总和是否满足条件。如果满足就让左边的数字出窗口,然后窗口变小;如果当前的总和不满足,继续让窗口变大

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {//看到这道题典型的使用滑动窗口int left = 0, right = 0;int len = INT_MAX;int sum = 0;while(right < nums.size()){sum += nums[right];while(sum >= target){len = min(len, right - left + 1);//左边的数字出窗口sum -= nums[left++];}right++;}if(len == INT_MAX)return 0;return len;}
};

为什么要使用滑动窗口?因为我们看到这道题的要求就是需要一段区间的数值,然后这个区间的的大小一直是不知道的,每次取的是区间右边的第一个数字,不要的是区间左边的第一个数字,并且区间一旦不满足左边的第一个数字也就是不需要了。所以说就是需要滑动窗口来解决这种问题


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

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

相关文章

LNMP架构之mysql数据库实战

mysql安装 到官网www.mysql.com下载源码版本 实验室使用5.7.40版本 tar xf mysql-boost-5.7.40.tar.gz #解压 cd mysql-boost-5.7.40/ yum install -y cmake gcc-c bison #安装依赖性 cmake -DCMAKE_INSTALL_PREFIX/usr/local/mysql -DMYSQL_DATADIR/data/mysql -DMYSQL_…

策略路由-IP-Link-路由协议简介

策略路由 策略路由和路由策略的不同 1.策略路由的操作对象是数据包&#xff0c;在路由表已经产生的情况下&#xff0c;不按照路由表进行转发&#xff0c;而是根据需要&#xff0c;依照某种策略改变数据包的转发路径 2.路由策略的操作对象是路由信息。路由策略的主要实现了路…

python学习14:python中的表达式

python中的表达式 1.表达式是什么呢&#xff1f; 表达式就是一个具有明确结果的代码语句&#xff0c;如11、type(‘字符串’)、3*5等 在定义变量的时候&#xff0c;如age108,等号右侧的就是表达式&#xff0c;也就是有具体的结果&#xff0c;将结果赋值给了等号左侧的变量 2.…

【ripro美化】设计子主题sheji-child素材资源下载站模板(集成后台+无授权+独立运行)

RiPro主题版本&#xff1a;8.0│PHP版本要求&#xff1a;必须7.2│子主题支持&#xff1a;建议正版主题│子主题当前版本&#xff1a;V1.1│主题设置&#xff1a;全功能后台设置&#xff0c;无需改代码 更新记录 2.0版本更新内容&#xff1a; 1&#xff1a;修复标签不显示bu…

odoo + wkhtmltopdf完美预览打印方案

wkhtmltopdf介绍&#xff1a;实现html转pdf 下载地址&#xff1a;https://wkhtmltopdf.org/downloads.html 灵活性&#xff1a;wkhtmltopdf支持多种输入格式&#xff0c;包括本地HTML文件、远程URL和HTML片段。它还提供了丰富的选项和参数&#xff0c;使用户能够自定 义生成的P…

乐维更改IP地址

1.1 系统IP调整 vim /etc/sysconfig/network-scripts/ifcfg-ens1921.2 Web相关服务IP变更 1.2.1 编辑/itops/nginx/html/lwjkapp/.env文件,更改ZABBIXSERVER、ZABBIXRPCURL、DB_HOST中的IP 1.2.2 进入/itops/nginx/html/lwjk_app/目录下,执行php bin/manager process-conso…

《手把手教你》系列技巧篇(五十八)-java+ selenium自动化测试-分页测试(详细教程)

1.简介 前几天&#xff0c;有人私信里留言问宏哥&#xff0c;分页怎么自动化测试了&#xff0c;完了给他说了说思路&#xff0c;不知道最后搞定没有&#xff0c;索性宏哥就写一篇文章来讲解和介绍如何处理分页。 2.测试场景 对分页来说&#xff0c;我们最感兴趣的和测试的无非…

Tuxera for Mac2024软件产品密钥及下载安装教程

Tuxera for Mac在安全性和稳定性方面表现出色&#xff0c;为用户提供了可靠的数据保障和无忧的使用体验。 首先&#xff0c;从安全性角度来看&#xff0c;Tuxera for Mac采用了先进的技术来保护用户的数据。它支持快速全面的数据保护&#xff0c;通过智能缓存技术确保文件传输…

ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)

新内容如下 1、子主题独立运行,彻底摆脱覆盖原主题文件 2、下载信息插件升级优化 3、细节优化 V1.0更新内容如下 1、同步暗黑美化、手机端美化 2、新增菜单合成幻灯片&#xff08;后台自行设置&#xff09; 3、新增公告统计 &#xff08;后台自行设置&#xff09; 4、新增…

制作CHM格式的Java学习笔记

1.相关制作工具 Markdown写作工具&#xff1a;Typro 写作md学习笔记 CHM制作工具&#xff1a;妙网电子书制作大师 导出书刊&#xff1a;选CHM格式 2.为什么选择CHM 无限分级性能保证 CHM的本质是HTML&#xff0c;也就是说无论制作的CHM文档中包括了多少内容&#xff0c;打开…

RiPro主题-子主题huzao-child美化包v4.0带更新,附下载插件

压缩包里包含子主题下载插件演示数据 V4.0更新内容如下 1、左下角会员推广广告悬浮集成到后台 2、底部悬浮登录增加是否登录判断 3、在线申请友链页面美化 4、手机端底部版权信息被遮挡优化 5、部分bug修复及细节优化 源码下载 RiPro主题-子主题huzao-child美化包v4.0带…

基于SpringBoot的“篮球论坛系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“篮球论坛系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能模块图 系统首页界面图 用户注册界面…