给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
sum记录长度,l记录起点,如果sum >= target,则min(当前长度),sum -= nums[l], l--
class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int l = 0, minx = 100010; long long sum = 0; for(int i = 0; i < nums.size(); i++) { sum += nums[i]; while(sum >= target) { minx = min(minx, i + 1 - l); sum -= nums[l], l++; } } return minx == 100010 ? 0 : minx; } };