题目内容:
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其总和大于等于 target
的长度最小的
子数组
[numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3]
是该条件下的长度最小的子数组。
难点:
1.滑动窗口的实现;
2.运行时间的进一步要求
思路:
1.本题可使用两层for循环的暴力解法,但运行时间不佳,考虑到部分计算步骤有重合,选择使用滑动窗口的方法(双指针的一种);
2.滑动窗口中为当前字符串,满足其和 ≥ target 的长度最小的连续子数组;如果当前窗口的值大于等于target,窗口的前指针需要向前移动;窗口的后指针就是遍历数组的指针,即for循环里的索引。
3.注意:在完整代码中的34和38行不能直接使用类似如下表达:否则会超过时间限制