一、滑动窗口算法
其实就是个可以滑动的窗口,好吧,有点废话了,但是确实是这样的。设置两个指针控制窗口的开始与结束,窗口外的内容可以暂不考虑,这样就减少了一些无用的情况,所以会比暴力解法时间复杂度低。
二、滑动窗口思路
1、在操作字符串或者数组时,设置left与right双指针,初始值都为0,[ left, right ]就是一个窗口;
2、遍历并不断地让 right 指针右移,直到满足既定条件,刷新结果;
3、此时 right 不变,不断增加 left 指针,缩小窗口,只要满足既定条件,就刷新结果,直到不符合既定条件时,回到操作第2步。
三、下面是一道例题,出自LeetCode209
这道题用滑动窗口做旧非常合适了,代码如下:
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(target, nums) {