合肥比较好的网站建设公司,专题网站模板,小型网站建设源码,如何做网站的推广209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] #xff0c;并返回其长度。如果不存在符合条件的子数组#xff0c;返回 0 。
示例 1#xf…209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, 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
提示
1 target 109 1 nums.length 105 1 nums[i] 105
思路利用滑动窗口定义两个指针为窗口的开始和结束同时指向0位置然后加到sumend不断后移sum大于等于target时开始更新子数组最小长度然后把start减掉start后移
class Solution {public int minSubArrayLen(int target, int[] nums) {int i 0;int res Integer.MAX_VALUE;int sum 0;for(int j 0; j nums.length; j){sum nums[j];while(sum target){int len j - i 1;res Math.min(res, len);sum - nums[i];i;}}return res Integer.MAX_VALUE ? 0 : res;}
}