209. Minimum Size Subarray Sum
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).
题目链接:https://leetcode.com/problems/minimum-size-subarray-sum/
解法:双指针-滑动窗口
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int len = nums.size();
if(len<=0) return 0;
int i=0, j=0, minl=INT_MAX, sum=nums[0];
while(true){
if(sum<s){
if(j>=len-1) break;
else{
sum+=nums[++j];
}
}else{
if(j-i+1<minl){
minl = j-i+1;
}
sum -= nums[i++];
}
}
return minl==INT_MAX?0:minl;
}
};
tip:minl设成nums.size()+1即可