算法刷题:长度最小的子数组
- 软件开发
- 2025-08-04 01:54:01

长度最小的子数组 .题目链接题目详情算法原理滑动窗口定义指针进窗口判断出窗口 我的答案 . 题目链接
长度最小的子数组
题目详情 算法原理 滑动窗口这道题,我们采用滑动窗口的思想来解决,具体步骤如图所示
定义指针如图所示,两个指针都需要从左往右进行遍历,因此初始值都为0 除此之外,还需要定义题目所需要的其他变量,如窗口总和sum和窗口总长度len,sum初始值为0,而len的初始值,为了防止比较子数组长度时出错,定义为: Integer.MAX_VALUE
进窗口sum加上当前right的值,就表示进窗口
判断此时sum的值小于target,不满足条件,则需要继续进窗口,再次进窗口之前,需要将right往后移动一位 到了这里,终于满足条件了,接下来就进入出窗口的环节了,但是为了解决当前这道题,我们需要在满足条件之后,出窗口之前,更新一下len的最小值
出窗口所谓的出窗口,就算将sum减去左边left的值,并将left往后移动一位,可以看到,判断当前的sum明显是小于target了,不满足条件,则需要继续进窗口,依次循环,直到right到达数组的边界
我的答案 class Solution { public int minSubArrayLen(int target, int[] nums) { int sum = 0,n = nums.length; //防止比较子数组长度时出错 int len = Integer.MAX_VALUE; //定义指针 for(int left = 0,right = 0;right<n;right++){ //进窗口 sum+=nums[right]; //判断 while(sum>=target){ //比较长度,取最小 len = Math.min(len,right-left+1); //出窗口 sum-=nums[left++]; } } //如果没有满足条件的子数组,需要注意返回值 return len==Integer.MAX_VALUE?0:len; } }算法刷题:长度最小的子数组由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“算法刷题:长度最小的子数组”
上一篇
计算机专业必看《编程之神》
下一篇
ZigBee学习——BDB