原文链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/
题目:
思路分析:这道题是给定一个含有n个正整数的数组和一个正整数s,然后让我们找出该数组中满足其和>=s的长度最小的连续字数组,最后返回子数组的长度,如果不存在的话就返回0。
1.首先定义一个变量len记录子数组的长度,初始值为0,然后定义一个变量sum表示子数组的和。
2.遍历数组,让sum从第一个数开始加,如果sum>=s的话,判断len和j-i+1的大小决定是否重置len,然后sum-=sums[i],再i++进行下一个循环。
3.最后返回len。
源代码:
class Solution {
public int minSubArrayLen(int s, int[] nums) {
int len = 0;
int i = 0;
int sum = 0;
for(int j = 0;j < nums.length;j++){
sum+=nums[j];
while(sum >= s){
len = len == 0?(j - i + 1):Math.min(len,j - i + 1);
sum-=nums[i];
i++;
}
}
return len;
}
}