【简单】209.长度最小的子数组

news/2025/2/24 6:51:52

题目描述

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

找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回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

解题方法

在力扣中,暴力法已经超时,此处不说明暴力法,可参考代码随想录网站说明

滑动窗口法

参考视频代码随想录

所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。
滑动窗口用一个for循环来完成这个操作。
首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。
如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?
此时难免再次陷入 暴力解法的怪圈。
所以 只用一个for循环,那么这个循环的索引,一定是表示 滑动窗口的终止位置。
在这里插入图片描述
可以发现滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)。

代码如下:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int result = INT32_MAX;
        int sum = 0;    //滑动窗口内的数字和
        int subL = 0;   //滑动窗口的长度
        int i = 0;  //起始位置
        for(int j = 0; j < nums.size(); j++)
        {
            sum += nums[j];
            while(sum >= target)
            {
                subL = j - i + 1;
                result = result < subL ? result : subL;
                sum -= nums[i++];
            }
        }
        return result == INT32_MAX ? 0 : result;
    }
};

时间复杂度:O(n)
空间复杂度:O(1)


http://www.niftyadmin.cn/n/5864048.html

相关文章

vim 多个关键字高亮插件介绍

在 Vim 中&#xff0c;可以通过以下方法实现多个关键字的高亮&#xff1a; 1. 使用插件&#xff1a;vim.mark vim.mark 是一个专门用于高亮多个关键字的插件&#xff0c;支持不同颜色的高亮&#xff0c;并提供便捷的跳转功能。 安装方法&#xff1a; 下载插件文件并放入 ~/…

R包的作用及安装指南

一、R包的作用 成功安装R并探索了如何通过RStudio使用R的可能性之后&#xff0c;下一步就是学习安装软件包(R包)。正是这些软件包使R的功能变得强大。一个包由一组或几组函数和命令组成&#xff0c;这些函数和命令用于解决特定的任务(如估计平均值、估计回归系数、绘制直方图)…

DeepSeek在初创企业、教育和数字营销领域应用思考

如今&#xff0c;像 DeepSeek 这样的人工智能工具正在改变企业的运营方式&#xff0c;优化流程并显著提高生产力。通过重复任务的自动化、大量数据的分析以及内容创建效率的提高&#xff0c;组织正在寻找新的竞争和卓越方式。本文介绍了 DeepSeek 如何用于提高三个关键领域的生…

XML DOM4J 三、XPath

1 什么是XPath XPath即为XML路径语言&#xff08;XML Path Language&#xff09;&#xff0c;它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构&#xff0c;提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointe…

flex布局自定义一行几栏,靠左对齐===grid布局

模板 <div class"content"><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"…

Docker 自制镜像:Ubuntu 安装 samba+Webmin

Docker 自制镜像&#xff1a;Ubuntu 安装 sambaWebmin 编写 Dockerfile构建镜像运行容器Webmin访问&#xff1a;Webmin文件夹权限设置 修复错误进入 Webmin 后顶部显示错误信息问题 1&#xff1a;ifconfig 和 ip 命令缺失问题 2&#xff1a;MD5.pm 模块缺失 提交修改为新镜像 导…

骁勇善战的量化利器:多因子模型【量化理论】

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲alpha策略制定后的测试问题 风险模型雏形 股票因子受多种因素影响&#xff0c;其价格由多种因素决定&#xff0c;所谓的多因子策略就是要发掘诸如此类的因子&#xff0c;以一种合理的方…

23贪心算法

分发饼干 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {int i0,j0;int count0;sort(s.begin(),s.end());sort(g.begin(),g.end());while(i<g.size()&&j<s.size()){if(g[i]<s[j]){i;j;count;}else…