class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
if(0 == nums.size())
return 0;
int l = 0, r = 0, ans = 0x7fffffff;
int sum = nums[0];
while (1) {
while(r < nums.size()-1 && sum < s){
sum += nums[++r];
}
if(sum < s){
if(0 == l)
return 0;
else
break;
}
ans = min(ans, r-l+1);
while(l < r && l < nums.size() && sum >= s){
sum -= nums[l++];
}
if(sum >= s){
return min(ans, r-l+1);
}
ans = min(ans, r-l+2);
}
return ans;
}
};