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