classSolution { public: intminSubArrayLen(int s, vector<int>& nums){ int res = nums.size()+1;
// 存储前缀和 vector<int> sums(nums.size()+1, 0); for(int i=1; i<=nums.size(); ++i) sums[i] = sums[i-1]+nums[i-1]; for(int l=0; l<nums.size(); ++l){ auto r_bound = lower_bound(sums.begin(), sums.end(), sums[l]+s); if (r_bound != sums.end()){ int r = r_bound-sums.begin(); res = min(res, r-l); } }
if(res==nums.size()+1) return0; return res; } };
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
classSolution{ publicintminSubArrayLen(int target, int[] nums){ int result = nums.length + 1; int left = 0; int sum = 0; for (int right = 0; right < nums.length; ++right) { sum += nums[right]; while (sum >= target) { result = Math.min(result, right - left + 1); sum -= nums[left++]; } } return result == nums.length + 1 ? 0 : result; } }