209. 长度最小的子数组
分析
-
定义窗口区间: 使用两个指针
i
和j
表示滑动窗口的左右边界 -
窗口扩展:从左到右遍历数组,不断将元素加入当前窗口
sum += nums[i]
-
窗口收缩:
- 当窗口内的子数组和
target
,尝试通过移动左指针j
来缩小窗口,寻找更短的子数组 - 每次收缩时更新最小长度:
res = min(res, i - j + 1)
- 当窗口内的子数组和
-
返回结果:
- 如果没有找到符合条件的子数组,返回
0
- 否则,返回记录的最短长度
- 如果没有找到符合条件的子数组,返回
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|