Sliding Window 总结
找连续subarray的题,都考虑一下滑动窗口。
形如 sum/product < k 的题,维护一个 <k 的滑动串口,每次 ++end 后,要改变start使得区间能够保持原有性质。
如果是 > k 的题,同样也是维护一个 <=k 的滑动窗口,类似单调栈的处理方法,++end之后,start对应修改的时候进行操作。
注意,上面两类问题是在数组元素都为正数的情况下,如果有负数,那么 到当前为止的 sum/product 就不是单调的了。
sum / product = k 的题,可以用 hashtable 来做,找 hash[sum-k] / hash[sum/k] 是否存在,存在进行操作。
别的类似 最多k个元素的 最大连续字串,或是 字符串的某些题,都是用滑动串口来做。
总之,一旦看到“连续”这样的字样的数组题,或是字符串题,都用滑动串口想一想。

浙公网安备 33010602011771号