我的代码(移动窗口):
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
if(nums.size()<=2){
int sum = 0;
for(int i=0; i<=nums.size()-1; ++i){
sum += nums[i];
if(sum>= target) return i+1;
}
return 0;
}
//长度大于2
int res = -1;
int left = 0;
int sum = 0;
for(int i=0; i<nums.size(); ++i){
sum += nums[i];
while(sum>=target){
int new_len = i - left + 1; //子数组长度
if(res==-1) res = new_len;
else res = min(res, new_len);
sum -= nums[left++];
}
}
return res==-1 ? 0:res;
}
};