给定一个只包含正整数的数组 nums 和一个正整数 target。
要求:找出数组中满足和大于等于 target 的长度最小的“连续子数组”,并返回其长度。
最直接的做法是暴力枚举,时间复杂度为 $O(n^2)$。但是我们可以利用滑动窗口的方法,在时间复杂度为 $O(n)$ 的范围内解决问题。
start 代表滑动窗口开始位置,end 代表滑动窗口结束位置。再定义一个变量 sum 用来存储滑动窗口中的元素和,一个变量 ans 来存储满足提议的最小长度。
先不断移动 end,直到 sum ≥ target,则更新最小长度值 ans。然后再将滑动窗口的起始位置从滑动窗口中移出去,直到 sum ≤ target,在移出的期间,同样要更新最小长度值 ans。
然后等满足 sum ≤ target 时,再移动 end,重复上一步,直到遍历到数组末尾。
