Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the Sum≥s . If there isn ' t one, return 0 instead.
For example, given the array [2,3,1,2,4,3]
and s = 7
,
The subarray has the [4,3]
minimal length under the problem constraint.
Click to show more practice.
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
A typical double-pointer sliding window, the front pointer expands, and the back pointer shrinks.
Record the sum of [begin, end]≥s the window size of the time.
classSolution { Public: intMinsubarraylen (intS, vector<int>&nums) { if(Nums.empty ())return 0; intRET =Int_max; intn =nums.size (); intBegin =0; intEnd =0; intCursum = nums[0];//guaranteed to exist while(End <N) {//Expand while(End < n && Cursum <s) {End++; Cursum+=Nums[end]; } if(end = = N)//cursum of [begin, N) < s Break; //Shrink (cursum >= s) while(Begin <= End && Cursum >=s) {ret= Min (ret, end-begin+1); Cursum-=Nums[begin]; Begin++; } End++; Cursum+=Nums[end]; } if(ret = =Int_max)return 0; Else returnret; }};
"Leetcode" 209. Minimum Size Subarray Sum