Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead.
Example:
Input:s = 7, nums = [2,3,1,2,4,3]Output: 2
Explanation: the subarray [4,3] has the minimal length under the problem constraint.
Follow up:
If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log n).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//C++: method1 4msclassSolution{public:intminSubArrayLen(int s, vector<int>& nums){int n = nums.size(), l =0, r =0, sum =0, ret = INT_MAX;
bool found =false;while(r<n){
sum += nums[r++];while(sum-nums[l]>=s){
sum -= nums[l++];}if(sum>=s){
ret = min(ret, r-l);
found =true;}}return found?ret:0;}};