双指针、滑动窗口、尺取法
内容整理
1、以总分的思路来进行阅读。
共有三种双指针技巧:
1、快慢双指针
2、左右双指针
3、滑动窗口
概述性的、综述性的文章
1、双指针技巧汇总
这篇文章,介绍了三种双指针技巧,其中重点介绍了快慢指针、左右指针
快慢双指针、左右双指针
1、双指针技巧汇总
滑动窗口
KMP 和 滑动窗口
第一次看到滑动窗口,我就联想到了KMP,下面的文章中,对此进行了说明:
1、zhihu 谈一谈“滑动窗口”
KMP算法是应用了滑动窗口最典型的例子
子序列中不能运用滑动窗口的
使用滑动窗口的前提是: "向右滑动的时候,是寻找一个可行解,向左滑动是优化解"
zhuanlan 经典动态规划:最大子数组问题
NOTE:
1、就是最大子序和
但是,稍加分析就发现,这道题还不能用滑动窗口算法,因为数组中的数字可以是负数。
NOTE:
1、如果都是非负数,显然是能够使用滑动窗口算法的,因为它满足了滑动窗口的单调性要求
滑动窗口算法无非就是双指针形成的窗口扫描整个数组/子串,但关键是,你得清楚地知道什么时候应该移动右侧指针来扩大窗口,什么时候移动左侧指针来减小窗口。
而对于这道题目,你想想,当窗口扩大的时候可能遇到负数,窗口中的值也就可能增加也可能减少,这种情况下不知道什么时机去收缩左侧窗口,也就无法求出「最大子数组和」。