Skip to content

双指针、滑动窗口、尺取法

内容整理

1、以总分的思路来进行阅读。

共有三种双指针技巧:

1、快慢双指针

2、左右双指针

3、滑动窗口

概述性的、综述性的文章

1、双指针技巧汇总

这篇文章,介绍了三种双指针技巧,其中重点介绍了快慢指针、左右指针

快慢双指针、左右双指针

1、双指针技巧汇总

滑动窗口

1、我写了首诗,把滑动窗口算法算法变成了默写题

KMP 和 滑动窗口

第一次看到滑动窗口,我就联想到了KMP,下面的文章中,对此进行了说明:

1、zhihu 谈一谈“滑动窗口”

KMP算法是应用了滑动窗口最典型的例子

子序列中不能运用滑动窗口的

使用滑动窗口的前提是: "向右滑动的时候,是寻找一个可行解,向左滑动是优化解"

zhuanlan 经典动态规划:最大子数组问题

NOTE:

1、就是最大子序和

但是,稍加分析就发现,这道题还不能用滑动窗口算法,因为数组中的数字可以是负数

NOTE:

1、如果都是非负数,显然是能够使用滑动窗口算法的,因为它满足了滑动窗口的单调性要求

滑动窗口算法无非就是双指针形成的窗口扫描整个数组/子串,但关键是,你得清楚地知道什么时候应该移动右侧指针来扩大窗口,什么时候移动左侧指针来减小窗口。

而对于这道题目,你想想,当窗口扩大的时候可能遇到负数,窗口中的值也就可能增加也可能减少,这种情况下不知道什么时机去收缩左侧窗口,也就无法求出「最大子数组和」。