[滑动窗口]209. 长度最小的子数组
209. 长度最小的子数组 - 力扣(LeetCode)
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其总和大于等于 target
的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
思路:
滑动窗口,滑动右窗口,满足条件的状况下,收缩窗口。
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int n=nums.size();int l=0;int sum=0;int len=INT_MAX;//指向窗口右端for(int r=0;r<n;r++){sum+=nums[r];//满足条件后缩窗口左端,找最小长度while(sum>=target){len=min(r-l+1,len);sum-=nums[l];l++;}}return len==INT_MAX?0:len;}
};