给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
int minSubArrayLen(int s, int* nums, int numsSize){ int l=0, r=-1; int sum=0; int len=numsSize+1; while(l<numsSize){ if((r+1<numsSize) && (sum<s)) { r++; sum +=nums[r]; } else { sum -=nums[l]; l++; } if(sum>=s) len = (len<(r-l+1)?len:(r-l+1)); } if(len==(numsSize+1)) return 0; return len; }