105.长度最小的子数组(力扣)|滑动窗口

代码演示 

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT_MAX; // 用于存储最小子数组的长度int sum = 0;          // 滑动窗口的长度int i = 0;            // 滑动窗口的起始位置int sumlength = 0;    // 当前子数组的长度// 遍历数组for (int j = 0; j < nums.size(); j++) {sum += nums[j]; // 扩展窗口// 检查和是否大于等于目标值while (sum >= target) {sumlength = j - i + 1; // 计算当前子数组的长度result = result < sumlength ? result : sumlength; // 更新最小长度sum -= nums[i]; // 收缩窗口i++;            // 移动窗口的起始位置}}return result == INT_MAX ? 0 : result;}
};

思路

所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果

  1. 初始化:

    • result 初始化为 INT_MAX,用于存储最小子数组的长度。
    • sum 是滑动窗口中元素的当前和。
    • i 是滑动窗口的起始位置。
    • sumlength 是当前子数组的长度。
  2. 遍历数组:

    • 外部循环 (for (int j = 0; j < nums.size(); j++)) 遍历数组的每个元素。
    • sum += nums[j];:将当前元素添加到滑动窗口的和中。
  3. 检查和是否大于等于目标值:

    • 如果 sum 变得大于或等于 target,表示当前窗口的和足够大。
    • 进入内部的 while 循环来收缩窗口。
  4. 收缩窗口:

    • sumlength = j - i + 1;:计算当前子数组的长度。
    • result = result < sumlength ? result : sumlength;:用目前的最小长度更新 result
    • sum -= nums[i];:从和中减去起始位置的元素。
    • i++;:将窗口的起始位置向右移动。
  5. 返回结果:

    • 循环结束后,如果 result 已经被更新,则返回 result,否则返回 0。

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

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

相关文章

SOLIDWORKS Flow Simulation电子机箱散热

这一次我们来聊聊电子冷却问题&#xff0c;以这个机箱散热问题为例&#xff0c;我们一般的散热设计要求是CPU不能超过80℃&#xff0c;北桥芯片温度不能超过85℃&#xff0c;南桥芯片不超过95℃。在实际情况下芯片内部的各处温度是不一样&#xff0c;面对与芯片级别的散热分析我…

windows下开机启动nignx、mysql、redis等服务

解决phpStudy开机自启动失败&#xff1a;创建Windows系统服务 在使用phpStudy作为我的集成开发环境时&#xff0c;我遇到了一个突然的挑战&#xff1a;服务无法在开机时自动启动。面对这一挑战&#xff0c;官方没有提供解决方案&#xff0c;所以我决定自行寻找答案。其他的服务…

基于Java技术的选课管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

C语言——螺旋矩阵(注释详解)

一、前言&#xff1a; 螺旋矩阵是指一个呈螺旋状的矩阵&#xff0c;它的数字由第一行开始到右边不断变大&#xff0c;向下变大&#xff0c;向左变大&#xff0c;向上变大&#xff0c;如此循环。 二、市面解法&#xff08;较难理解,代码长度短&#xff09;&#xff1a; 根据阶数…

Android File Transfer for Mac:畅享强大的安卓文件传输工具

作为一款功能强大的安卓文件传输工具&#xff0c;Android File Transfer for Mac&#xff08;以下简称AFT&#xff09;为Mac用户提供了便捷快速的安卓设备文件管理体验。无论是传输照片、音乐、视频还是文档&#xff0c;AFT都能满足你的需求&#xff0c;让你的文件传输更加高效…

目标检测mAP计算以及coco评价标准

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 讲一下目标检测中的一些常见的指标 在我们使用目标检测网络训练时 最后在验证集上会得到一个coco的评价列表 就像我们图中给的这一系列参数列表一样 我们再进一步引入两个概念 第一个叫做precisi…

Linux高级管理-搭建网站服务

在Ihternet 网络环境中&#xff0c;Web 服务无疑是最为流行的应用系统。有了Web站点&#xff0c;企业可以充分 展示自己的产品&#xff0c;宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技…

VisualStudio反汇编功能使用

VisualStudio反汇编功能使用 使用方法 到达断点时&#xff1a;CtrlK&#xff08;松开&#xff09;G&#xff08;后按&#xff09;唤出反汇编界面&#xff0c;就可以看到当前代码对应的汇编语言了 注意&#xff1a;进入反汇编窗口后可以F10单次调试一条汇编指令 其他&#…

基础数据结构----二叉树

二叉树的概念 1.二叉树的性质&#xff1a; 二叉树的每个节点最多有两个子节点&#xff0c;分别称为左孩子、右孩子&#xff0c;以他们为根的子树称为左子树、右子树。 二叉树的每层节点数以 2 的倍数递增&#xff0c;所以二叉树的第 i 层最多有 个节点。如果每层的节点数都…

一个不错的文章伪原创系统程序源码

一款文章伪原创系统程序源码免费分享&#xff0c;程序是站长原创的。 一共花了站长几天时间写的这个文章伪原创平台&#xff0c;程序无需数据库。 程序前端采用BootStrap框架搭建&#xff0c;后端采用PHP原生书写。 前端伪原创采用Ajax无刷新提交&#xff0c;Ajax转换到词库…

【CVE 复现】CVE-2022-0185 fsconfig之整数溢出

影响版本&#xff1a;Linux-v5.1~v5.16.2 测试版本&#xff1a;Linux-5.11.22&#xff0c;由于懒得搞环境&#xff0c;所以直接用的 bsauce 大佬提供的 测试环境 看看 patch&#xff1a; diff --git a/fs/fs_context.c b/fs/fs_context.c index b7e43a780a625b..24ce12f0db32…

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序&#xff0c;乔拓云模板平台助力商家抢占先机&#xff01;该平台涵盖全行业小程序模板&#xff0c;一键复制即可上线。 想要快速创建高效实用的小程序&#xff0c;乔拓云小程序模板开发平台为您提供了解决方案&#xff01;我们为您提供一系列精心设计的小程序模板…