滑动窗口
滑动窗口
曦暮流年介绍
滑动窗口法,也叫尺取法,可以用来解决一些查找满足一定条件的连续区间的性质的问题。
思想
就按照查找不含有重复字符的最长子串的长度来举例(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) 左
上面就是整个的执行流程,就像是可变的可视化区域由左向右活动一样