Post

定长滑动窗口问题

定长滑动窗口问题其实有一个大的for模板

1
2
3
4
5
6
for (int i = 0;i < n;++i) {
  // 1. 进入窗口
  if (i < k - 1) continue;
  // 2. 更新答案
  // 3. 离开窗口
}

可以做题试试就知道了

大小为 K 且平均值大于等于阈值的子数组数目 1317

这部分中,有一个很经典的问题可以转换为k长度的滑动窗口,比如头尾取数问题,求最大点数和

这个可以转化为长度为k的中间窗口最小问题

题目是1423. 可获得的最大点数

还有一类问题,比如2653. 滑动子数组的美丽值, 这类问题在找窗口里的nth element,这种一般数据值范围都比较小,可以用计数排序来解决,如果数据范围比较大的话,就要试试二分查找了。

This post is licensed under CC BY 4.0 by the author.

Trending Tags