题目:
Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn’t one, return 0 instead.
For example, given the array [2,3,1,2,4,3] and s = 7,
the subarray [4,3] has the minimal length under the problem constraint.
解析:
/思路:
//设置两个变量l,r,求这个子数组里的值和sum
//1.sum < s r++
//2.sum > s l++
//直至r = nums.length -1
class Solution {
public int minSubArrayLen(int s, int[] nums) {
int l = 0 ; int r = -1 ;
int sum = 0;
int res = nums.length + 1;
while ( l < nums.length){
if( r + 1 < nums.length && sum < s){
r++;
sum = sum + nums[r];
}
else{
sum = sum - nums[l];
l++;
}
if( sum >= s ){
res = Math.min( res, r + l -1);
}
}
if(res == nums.length + 1)
return 0;
return res;
}
}