算法 滑动窗口

滑动窗口

什么是滑动窗口:

 滑动窗口是一种算法设计和技巧,用于高效处理数组/字符串中的连续子序列的问题。它通过**动态**维护一个窗口,在遍历过程中调整窗口边界以满足约束条件。

解决什么问题:

 连续子区间优化问题,寻找最长/最短的连续数组,子字符串
 满足特定约束条件,元素和,频率限制

什么场景使用:

 1.线性结构
 2.求连续子序列
 3.需要维护子序列的状态

不定长滑动窗口:

Right 是一直自增的,需要做的是在right的循环里面,找到对应的left移动的条件(同时要清除之前的数据)。

例子:

Eg:给你一个整数数组 nums 和一个 正整数 k 。
请你统计有多少满足 「 nums 中的 最大 元素」至少出现 k 次的子数组,并返回满足这一条件的子数组的数目。
子数组是数组中的一个连续元素序列。

解:找最大的元素,right不断右移记录最大元素出现的次数cnt。当想让left移动的时候,就要不断删减cnt的数值,实现窗口的滑动,来重新计算cnt的值。

定长的滑动窗口:

1.先确定滑动窗口的大小。
2.窗口进入,窗口右端点进,一直进到左端点也进来。
3.一般判断条件。
4.右端点继续移动,左断点也移动。
5.得到结果
posted @ 2025-08-29 16:50  杰西卡若  阅读(19)  评论(0)    收藏  举报