滑动窗口算法
概念
- 滑动窗口主要是解决排序和搜索问题,其主要思想是维护一个窗口,窗口内的元素进行某种操作和判断,随着窗口的移动新元素不断的加入窗口。而窗口内的元素需要更新或移动到窗口的边缘。
算法的优点
- 这种算法可以在不使用排序处理大规模的数据。因为在处理过程中保持了元素的相对顺序。同时由于窗口是动态调整,可以处理不同窗口大小的和形状的窗口。
算法的步骤
- 初始化窗口: 定义一个窗口大小,并将初始窗口置于序列的开始或中间位置。
- 滑动窗口: 在序列上滑动窗口,每次获取新的窗口,包含一部分新的元素和旧的元素。
- 处理窗口: 在窗口内做特定的操作 如查找 计数 排序等
- 更新窗口: 根据操作结果,可能需要将窗口内的元素移动到窗口的边缘,以被容纳新的元素。
- 重复以上步骤:直到处理完所有序列。
滑动窗口使用场景
- 二分搜索 维护一个高效的搜索区间 这样在不进行排序的情况下 可以完成高效的搜索。
- 限流算法:将时间周期分为N个小的时间周期,分别记录N个小周期的访问次数,并根据时间滑动删除过期的小周期。
- 力扣:求最长不重复子串
posted @
2024-04-08 00:14
贺艳峰
阅读(
46)
评论()
编辑
收藏
举报