Leetcode经典题20--长度最小的子数组

ops/2024/12/26 14:23:29/

题目描述

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

找出该数组中满足其总和大于等于 target 的长度最小的子数组

[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

输入输出示例

输入:target = 7, nums = [2,3,1,2,4,3]

输出:2

解释:子数组 [4,3] 是该条件下的长度最小的子数组。

解决方案

方式一:滑动窗口
算法思想

定义两个指针 start 和 end 分别表示子数组(滑动窗口窗口)的开始位置和结束位置,维护变量 sum 存储子数组中的元素和(即从 nums[start] 到 nums[end] 的元素和)。

初始状态下,start 和 end 都指向下标 0,sum 的值为 0。

每一轮迭代,将 nums[end] 加到 sum,如果 sum≥s,则更新子数组的最小长度(此时子数组的长度是 end−start+1),然后将 nums[start] 从 sum 中减去并将 start 右移,直到 sum

实现代码
class Solution {public int minSubArrayLen(int target, int[] nums) {int n=nums.length;if(n==0){return 0;}int ans=Integer.MAX_VALUE;int start=0,end=0;//窗口的左边界和右边界int sum=0;//窗口的元素和while(end<n){//向右滑动sum+=nums[end];//当窗口内的元素和大于等于目标值,缩小窗口while(sum>=target){ans=Math.min(ans,end-start+1);sum-=nums[start];start++;}//否则扩大窗口end++;}//考虑达不到目标值的情况return ans==Integer.MAX_VALUE?0:ans;}
}
复杂度分析

时间复杂度:O(n),其中 n 是数组的长度。指针 start 和 end 最多各移动 n 次。

空间复杂度:O(1)。


http://www.ppmy.cn/ops/145141.html

相关文章

【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)

【Django】测试带有 CSRF 验证的 POST 表单 API 报错&#xff1a;Forbidden (CSRF cookie not set.) 问题描述 Django 使用 Apifox 测试 POST 表单报错。 Forbidden (CSRF cookie not set.): /api/parse [20/Dec/2024 15:17:25] "POST //api/parse HTTP/1.1" 403 …

YoloDotNet OBB(定向边界框)

文章目录 前言1、代码示例引入命名空间:初始化 Yolo 对象:加载图像和执行 OBB 检测:处理检测结果:2、自定义 OBB 绘制(可选)3、性能和准确性考虑前言 OBB(Oriented Bounding Box)在目标检测中用于更精确地框定非水平或垂直放置的物体。与常规边界框不同,OBB 可以根据物…

vscode的keil assistant 中搜索不到全局变量

搜不到 但是在包含的文件中输入 ../../../,就是全局搜索的结果 我的文件结构是&#xff1a;\Desktop\LVGL文件系统移植&#xff08;lvgl8&#xff0e;&#xff13;&#xff09;\Projects\MDK-ARM 盲猜是keil assistant 当前文件夹打开的时候是进入到了MDK-ARM文件夹层次&…

园区网大综合实验

首先按照题目要求划分网络环境&#xff08;如图所示&#xff09; 进行 sw1 sw2 sw3 sw4 vlan基本配置 sw1 sw2 sw3 sw4 ip配置 r1 isp 在r1 0/0/0接口做nat设置 stp生成树配置 sw1 sw2 sw3 sw4 stp参数修改 根保护 mstp边缘接口 vrrp

Vue3 +Element-Plus el-select下拉菜单样式(局部生效)

下拉框代码 <el-selectclass"buttons-switch-group select-hub":teleported"false"style"width: 120px"v-model"queryParam.type"placeholder"请选择"size"mini"change"loadData"><el-option…

VBA技术资料MF245:创建嵌入式条形图

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Max AI prompt1

1&#xff0c;内容/要点逻辑链&#xff0c;层次结构可视化 请提取其中的主要内容以及观点&#xff0c;以及对应的逻辑链&#xff0c;以图示化、层次结构通俗易懂地展现&#xff0c;要求使用中文 #我目前常用的文献阅读prompt提示词&#xff0c;主要是内容、逻辑链2者兼备2&…

贪心算法(三)

目录 一、k次取反后最大化的数组和 二、优势洗牌 三、最长回文串 四、增减字符串匹配 一、k次取反后最大化的数组和 k次取反后最大化的数组和 贪心策略&#xff1a; 解题代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>&am…