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.
Problem: Given a positive integer array and a positive integer s, the minimum length of a continuous subarray and greater than or equal to S is obtained.
Problem solving idea: adopt sliding window Algorithm (Slide windows algorithm).
Set the subscript L and R to think of the left open right [L, r] as a window.
- When the sum in the window is less than S, R slides to the right, increasing the window interval.
- When the sum of sums in the window is greater than or equal to s, the expression has satisfied the original topic requirement, is a feasible solution, the solution L swipe right, continue to solve.
intMinsubarraylen (intS, vector<int>&nums) { intL =0; intR =0; intsum =0; intres =Intmax; while(R <nums.size ()) {Sum+=Nums[r]; R++; while(Sum >=s) {res= Min (res, R-l); Sum= Sum-Nums[l]; L++; } } return(res = = Intmax)?0: res;}
Additional records:
Slide Window Algorithm may not be a formal term because the introduction was not found in Wikipedia.
If you encounter the minimum/maximum contiguous subarray, you might consider using Slide Window algorithm.
Resources:
Leetcode Minimum Size subarray Sum, Jyuan
[Leetcode] Minimum Size subarray Sum problem Solving idea