一、题目解析

二、算法原理
解法1:暴力枚举出所有的子数组的和0(n^2)

这里有两个点要注意,第一,我们可以观察到当sum>=target时,继续枚举是没有意义的,因为我们要找的是最短子数组,所以我们只需要枚举到right第一次满足条件时,就可以移动left了。
第二点呢,我们在数组的遍历中需要维护好sum的值,当left移动过后,新的sum没必要在次遍历求和,只需要在之前的基础上减去之前left指向的值即可。
解法2:利用上面第一点的发现,我们可以使用“滑动窗口”也叫“同向双指针”优化暴力枚举
我们需要初始化几个变量,left(左区间),right(右区间),sum(元素求和),len(元素长度)
通过进窗口,判断,出窗口,更新结果(更新的位置顺序由对应的题目来决定,本题更新结果在判断过后就要进行)

时间复杂也很好分析,(right遍历)n+(left遍历)n = o(n)
这里可以根据思路来自己实现一下,链接: 209. 长度最小的子数组 - 力扣(LeetCode)
三、代码实现

这里的len赋值INT_MAX目的是为用于fmin中选出最小的len ,fmin用于两个浮点数选出小的那一个,而最后的三目操作符意思为当len的值为INT_MAX时,返回0,否则返回len。因为当len为INT_MAX时可以认为不存在最短数组小于等于tagent,所以这里要对len的值进行判断。

如果能帮到您能否留下一个免费的赞,这对我很有帮助,我们下期再见!