卡尔白~ (@Karlbaey) 在 程序设计#4%1【经典算法】双指针和滑动窗口·第二部分 中发帖
上期指路 ➡
原文 URL 请到文末查看!感谢支持!
上一期中,我们接触了双指针算法的两种基本用法:快慢指针和对撞指针。其中,快慢指针适用于解决去重问题以及解决有环的链表的问题;而对撞指针适合在排好序的数组中寻找元组(例如元组中每个数的和恰好是定值)。
我们提到,双指针算法就像是在漆黑的走廊里派出两名干员。现在我们把干员换成一盏大功率探照灯,它能够一次把走廊中的一部分照亮,原来的两名干员就变成了光照亮之处的左右端点。
有没有发现,这段被照亮的地方就好比在走廊中打开了一个窗口。所以,这种算法思想就叫做滑动窗口算法。
滑动窗口 - 长度固定
我们从简单的情况说起。
假设我们在大数组里寻找一个长度固定为 k 的子数组,并且让小数组元素的平均值最大,因为子数组长度固定,所以我们需要让子数组元素的和最大。
我们可以使用 now 来记录当前窗口内的和,ans 每次循环都与 now ...