滑动窗口:所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。
窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int res = 100001,sum = 0;
int i = 0;
for(int j = 0;j < nums.size();j ++)
{
sum += nums[j];
while(sum >= target) //当窗口总和不小于目标值要持续缩小窗口直到小于
{
if(j - i + 1 < res) res = j - i + 1;
sum -= nums[i ++];
}
}
if(res == 100001) return 0;
else return res;
}
};