Given an array of n positive integers and a positive integer s, find the minimal length of a 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.
cclass Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
if(nums.size()<=0) return 0;
int minlen=nums.size()+1,sum=nums[0],first=0,second=0;
while(first<=second)
{
if(sum>=s)
{
if(second-first+1<minlen) minlen=second-first+1;
sum-=nums[first];
first++;
}
else
{
second++;
if(second<nums.size())
sum+=nums[second];
else
break;
}
}
if(minlen!=nums.size()+1)
return minlen;
else
return 0;
}
};