当前位置: 首页 > news >正文

【算法方法总结·三】滑动窗口的一些技巧和注意事项

【算法方法总结·三】滑动窗口的一些技巧和注意事项

  • 【算法方法总结·一】二分法的一些技巧和注意事项
  • 【算法方法总结·二】双指针的一些技巧和注意事项
  • 【算法方法总结·三】滑动窗口的一些技巧和注意事项

【滑动窗口】

数组的和 随着 右边指针 移动一定是 非递减 的,就是 单调不能包含负数

  • 暴力解法 时间复杂度:O(n^2)
  • 滑动窗口 时间复杂度:O(n)
  • 数组不是单调的话,不要用 滑动窗口,考虑用 前缀和前缀和很简单,就放此章一块讲了
  • 所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果,将O(n^2)的暴力解法降为O(n)
  • 使用了双指针机制leftright 指针维护窗口边界,初始均为 0外层循环用 right 扩大窗口,内层循环用 left 缩小窗口

滑动窗口的使用条件

数组的和 随着 右边指针 移动一定是 非递减 的,就是 单调

  • 数据连续性:需要 数组单调 / 字符串的连续子序列问题。
  • 存在重复计算:暴力解法中存在冗余计算,窗口滑动可复用部分结果。
  • ​窗口状态可维护:窗口内的状态(如字符频率、和)可通过指针移动快速更新
  • ​时间复杂度优化需求:通常将时间复杂度从 O(n²) 优化O(n)

实现滑动窗口,应确定三点:

  • (1)窗口内 是什么?
  • (2)如何 移动 窗口的 起始位置?
  • (3)如何 移动 窗口的 结束位置?

滑动窗口模板

//外层循环扩展右边界,内层循环扩展左边界
int l = 0;
for (int r = 0 ; r < n ; r++) {//当前考虑的元素while (l <= r && check()) {//区间[left,right]不符合题意//扩展左边界}//区间[left,right]符合题意,统计相关信息
}

相关力扣题

  • 相关解法见【算法题解答·三】滑动窗口

3.无重复字符的最长子串

438.找到字符串中所有字母异位词

209.长度最小的子数组


【前缀和】

前缀和 的思想是 重复利用 计算过的 子数组之和,从而降低区间查询需要累加计算的次数


【滑动窗口】和【前缀和】的选择

特性

维度滑动窗口​前缀和
核心机制双指针 动态调整 窗口边界预处理 数组的累积和
数据特性处理 连续子序列 问题快速计算 任意区间和
操作方向​单向滑动(通常右指针主导静态存储,支持 任意区间 查询

选择策略

  • 优先用滑动窗口
    – 需要处理连续子序列的最值问题
    – 数据满足单向滑动条件​(如均为正数

  • ​优先用前缀和
    – 需要快速计算区间和​(尤其是多次查询)
    – 数据包含负数或需要统计特定区间性质​(如奇偶性

http://www.lryc.cn/news/546643.html

相关文章:

  • IO的概念和标准IO函数
  • tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)
  • 【流程图】在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法
  • IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题
  • 【流行病学】Melodi-Presto因果关联工具
  • 详细分析KeepAlive的基本知识 并缓存路由(附Demo)
  • 【Go】Go viper 配置模块
  • zabbix“专家坐诊”第277期问答
  • 大模型工程师学习日记(十一):FAISS 高效相似度搜索和密集向量聚类的库
  • python学习第三天
  • 深入解析 Svelte:下一代前端框架的革命
  • C++20 中位移位运算符的统一行为:深入解析与实践指南
  • Linux——基本指令
  • MySql面试总结(二)
  • Pytorch中的主要函数
  • Java实现大数据量导出报表
  • 大语言模型 智能助手——既能生成自然语言回复,又能在必要时调用外部工具获取实时数据
  • PyTorch 系统教程:理解机器学习数据分割
  • 分水岭算法(Watershed Algorithm)教程:硬币分割实例
  • 【STM32项目实战系列】基于STM32G474的FDCAN驱动配置
  • shell文本处理
  • 如何利用客户端双向TLS认证保护云上应用安全
  • nlp第十节——LLM相关
  • T-SQL 语言基础: SQL 数据库对象元数据及配置信息获取
  • ue5 创建多列StreeView的方法与理解
  • C# OnnxRuntime部署DAMO-YOLO香烟检测
  • 陕西省地标-DB61/T 1121-2018 政务服务中心建设和运营规范
  • UDP协议(20250303)
  • 【四.RAG技术与应用】【12.阿里云百炼应用(下):RAG的云端优化与扩展】
  • Docker新手入门(持续更新中)