题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution
{
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int n=nums.size();
int sum=0,ret=INT_MAX;
for(int left=0,right=0;right<n;right++)
{
// 进窗口
sum+=nums[right];
while(sum>=target)
{
// 更新结果
ret=min(ret,right-left+1);
// 出窗口
sum-=nums[left++];
}
}
return ret==INT_MAX?0:ret;
}
};
题目解析
使用滑动窗口,每遍历一个数就进窗口。然后判断当前的数组和是否>=target,若条件成立则更新结果并且出窗口。
细节问题
若没有符合条件的则返回0