力扣(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
- {
- // 进窗口
- sum+=nums[right];
- while(sum>=target)
- {
- // 更新结果
- ret=min(ret,right-left+1);
- // 出窗口
- sum-=nums[left++];
- }
- }
- return ret==INT_MAX?0:ret;
- }
- };
题目解析
使用滑动窗口,每遍历一个数就进窗口。然后判断当前的数组和是否>=target,若条件成立则更新结果并且出窗口。
细节问题
若没有符合条件的则返回0
代码