滑动窗口算法

滑动窗口算法

概念

  • 滑动窗口主要是解决排序和搜索问题,其主要思想是维护一个窗口,窗口内的元素进行某种操作和判断,随着窗口的移动新元素不断的加入窗口。而窗口内的元素需要更新或移动到窗口的边缘。

算法的优点

  • 这种算法可以在不使用排序处理大规模的数据。因为在处理过程中保持了元素的相对顺序。同时由于窗口是动态调整,可以处理不同窗口大小的和形状的窗口。

算法的步骤

  • 初始化窗口: 定义一个窗口大小,并将初始窗口置于序列的开始或中间位置。
  • 滑动窗口: 在序列上滑动窗口,每次获取新的窗口,包含一部分新的元素和旧的元素。
  • 处理窗口: 在窗口内做特定的操作 如查找 计数 排序等
  • 更新窗口: 根据操作结果,可能需要将窗口内的元素移动到窗口的边缘,以被容纳新的元素。
  • 重复以上步骤:直到处理完所有序列。

滑动窗口使用场景

  • 二分搜索 维护一个高效的搜索区间 这样在不进行排序的情况下 可以完成高效的搜索。
  • 限流算法:将时间周期分为N个小的时间周期,分别记录N个小周期的访问次数,并根据时间滑动删除过期的小周期。
  • 力扣:求最长不重复子串
posted @ 2024-04-08 00:14  贺艳峰  阅读(10)  评论(0编辑  收藏  举报