滑动窗口

介绍

滑动窗口法,也叫尺取法,可以用来解决一些查找满足一定条件的连续区间的性质的问题。

思想

就按照查找不含有重复字符的最长子串的长度来举例(abcabcbb)

现有两个变量用来当左边和右边的下标(这里以括号表示),满足要求的时候,右括号往右走,如下所示

(a) b c a b c b b –> (a b) c a b c b b –> (a b c) a b c b b –> (a b c a) b c b b

右括号一直走,直到其中包含重复字符也就是两个a,这是右括号停止走并记录此时的最大值也就是3(abc)

不满足的时候左括号开始走

(a b c a) b c b b –> a (b c a) b c b b

此时可以看到括号里面的内容是只有 bca 的,那么满足条件右括号开始走

a (b c a) b c b b –> a (b c a b) c b b

可以看到里面又有重复字符了,此时左括号开始走,并记录最大值,还是3(bca)

a (b c a b) c b b –> a b (c a b) c b b 左

a b (c a b) c b b –> a b (c a b c) b b 右

a b (c a b c) b b –> a b c (a b c) b b 左

a b c (a b c) b b –> a b c (a b c b) b 右

a b c (a b c b) b –> a b c a (b c b) b –> a b c a b (c b) b 左

a b c a b (c b) b –> a b c a b (c b b) 右

a b c a b (c b b) –> a b c a b c (b b) –> a b c a b c b (b) 左

上面就是整个的执行流程,就像是可变的可视化区域由左向右活动一样