
思路:(正确,但空间和时间复杂度太高)
int minSubArrayLen(int target, int* nums, int numsSize){
int temp = 0;
int ret = 0;
int sum = 0;
int i = 0;
int j = 0;
for(i = 0; i < numsSize; i++) {
temp = 0;
sum = 0;
for(j = i; j < numsSize; j++) {
sum += nums[j];
temp++;
if(sum >= target)
if(ret > temp || ret == 0)
ret = temp;
}
if(j==numsSize-1 && sum < target)
return 0;
}
return ret;
}

官方思路:(滑动窗口)
int minSubArrayLen(int target, int* nums, int numsSize){
int length = MAXLENGTH;
int sum = 0;
int left = 0; //左指针
int right = 0; //右指针
int subLength = 0;
for(right = 0; right < numsSize; right++) {
sum+=nums[right];
//若sum>=target,则将left位数据从sum中减去,看看sum是否还大于等于target。若不是,则for循环继续
while(sum >= target) {
subLength = right - left+1;
length = length < subLength ? length : subLength;
sum-=nums[left++]; //判断从sum中减去left指针位sum还是否大于等于target
}
}
return length == MAXLENGTH ? 0 : length;
}
