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

【滑动窗口与双指针】【定长滑窗】—1456. 定长子串中元音的最大数目

滑动窗口与双指针(定长/不定长/单序列/双序列/三指针/分组循环)

定长滑窗三步套路

1、入(第一个窗口)
先让右端点从 0 走到 k-1,把初始 k 个元素一次性统计完,并立即更新一次答案。
2、滑(剩余窗口)
右端点继续从 k 走到 n-1,每次循环只做三件事,顺序可互换:
a) :新元素 s[i] 进窗 → 更新统计量;
b) :旧元素 s[i-k] 出窗 → 更新统计量;
c) 更新:用最新统计量刷新全局答案,必要时提前剪枝 return。
循环结束后把最终答案抛回即可。

核心套路 3×1 口诀

入:先铺好第一个窗口
滑:右边进、左边出
更新:每一步都刷新最值

class Solution:def maxVowels(self, s: str, k: int) -> int:# “定长滑窗”套路本身就天然覆盖了所有 k 值,无需再写“边界”情况current_num = 0alphabet = set('aeiou')# 首先遍历 k 个窗口for i in range(k):if s[i] in alphabet:current_num += 1max_num = current_num# 遵循先入后出的步骤for i in range(k,len(s)):# 先入if s[i] in alphabet:current_num += 1# 后出 左端点 = i-k 因为在上一步添加了新元素 i 已经 +1if s[i-k] in alphabet:current_num -= 1if current_num > max_num:max_num = current_num# 优化:如果 max_num == k return if max_num == k:return max_numreturn max_num

常见坑点 Top5

  1. 忘记先统计第一个窗口
  2. 出窗时下标写成 i-k+1
  3. 把 set 写成 list 导致超时
  4. 窗口长度 != k
  5. 提前 return 漏掉全局最值

心路历程

最初参考了灵茶山艾府提出的定长滑动窗口思路【见参考】,但在此基础上,AI 推导出的新方法在理解上更加直观,因此最终采用了新的思路进行实现。

参考

Leetcode 灵茶山艾府 的定长滑窗解题套路

http://www.dtcms.com/a/515513.html

相关文章:

  • Flink 实验性特性把“已预分区”的 DataStream 重新解释为 KeyedStream
  • ADB -> 常用文件操作的组合命令
  • 网格系统网站济南网约车公司
  • 社区网站的推广方案手机写wordpress博客
  • 原子性、可见性和指令重排问题的根源
  • 什么是测试覆盖率?如何衡量?
  • 《宝可梦传说Z-A》下载 整合龙神Ryuinx、eden模拟器附金手指和存档 安卓手机PC版
  • 自动驾驶---基于安全走廊的端到端
  • 2025主流AI标书工具推荐,“闭眼选”高效生成投标文件
  • (22)100天python从入门到拿捏《【网络爬虫】网络基础与HTTP协议》
  • iis6建设网站叶梓 wordpress 主题
  • 【C#】获取电脑网卡MAC地址
  • ​2025网络安全前景与学习路线:抓住数字时代的安全机遇
  • Linux小课堂: SSH 服务部署与客户端连接实战详解
  • 好看网站手机版南开做网站公司
  • 七日 Go 的自学笔记 (一)
  • Node.js 接入淘宝 API 实战:构建商品信息实时同步服务
  • Node.js SQL数据库:MySQL/PostgreSQL集成
  • 虚拟化网络连接与虚拟机嵌套
  • 无锡企业制作网站网站建设项目的费用做什么科目
  • Slack消息体->消息ID的设计
  • 如何轻松将 Outlook 联系人导出到 Excel
  • 图像尺寸测量仪应用Type-C接口:精准检测,赋能科技
  • C++仿mudo库高并发服务器项目:Buffer模块
  • 找能做网站的搜狗推广下架
  • 性能分析--perfetto工具使用
  • 【matlab】如何提取论文plot图中的数据
  • 手机网站开发的目的ppt免费背景图片
  • Java 核心知识点查漏补缺(一)
  • UE5 C++ CVar控制台命令字段使用