长度最小的子数组(力扣209)
暴力枚举
问题一:不清楚判断条件
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int res=1000009;
for(int i=0;i<nums.size();i++)
{
int len=0,sum=0;
for(int j=i;j<nums.size();j++)
{
sum+=nums[j];
if(sum>=target)
{
len=j-i+1;
res=min(len,res);
break;
}
}
}
return res==1000009?0:res;//判断res是否更新
}
};
滑动窗口
问题一:不清楚判断条件
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int len=0,res=1000009;
int i=0;int sum=0;
for(int j=0;j<nums.size();j++){
sum+=nums[j];
while(sum>=target)
{
len=j-i+1;
res=min(res,len);
sum-=nums[i++];
}
}//以终止位置为准,对每一个j(窗口的终止位置),窗口都要进行伸缩
return res==1000009?0:res;
}
};