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个元素的 最大连续字串,或是 字符串的某些题,都是用滑动串口来做。

总之,一旦看到“连续”这样的字样的数组题,或是字符串题,都用滑动串口想一想。

posted @ 2018-09-07 13:05  約束の空  阅读(247)  评论(0)    收藏  举报