1. O(n^2)
int minSubArrayLen(int s, int* nums, int numsSize) {
if (!numsSize) return 0;
int i = 0, j = 1;
int res = numsSize + 1;
int sum = nums[0];
for (i = 0; i < numsSize; i++) {
sum = 0;
for (j = i; j < numsSize; j++) {
sum += nums[j];
if (sum >= s) {
if (j - i < res) {
res = j - i;
}
break;
}
}
if (j == numsSize) break;
}
if (res == numsSize + 1) {
return 0;
}
return res+1;
}
2. O(n)
int minSubArrayLen(int s, int* nums, int numsSize) {
if (!numsSize) return 0;
int i = 0, j = 1;
int res = numsSize + 1;
int sum = nums[0];
while (j < numsSize) {
while (j < numsSize && sum < s) {
sum += nums[j++];
}
while (sum >=s) {
if (j-i < res) res = j-i;
sum -= nums[i++];
}
}
return (res == numsSize + 1) ? 0 : (res);
}