滑动窗口问题合集

leetcode+labuladong

滑动窗口要先确定,哪一个窗口固定(枚举哪个,哪一个固定),哪一个窗口滑动

一个是包含T的排列一个是包含T所有字母,其实是一个意思,唯一的区别是,在子串中T的排列是连续的在子串中T字母之间可以不连续

所有字母的实现,用一个unordered_map即可,也可以用数组

unordered_map<char,int> need,window;//need[c]表示T中需要几个字符c,window[c]表示,目前窗口中有几个字符c

int need[26];//need[0]表示字母a出现的次数,need[1]表示字母b出现的次数

对于包含所有字母,在缩小左窗口的时候,左窗口停止缩小的边界是: window中字符的种类数<need中的种类数了

对于包含排列,左右窗口是同时滑动的,窗口长度固定,是否停止滑动,只要need和window相同的时候就可以停止,说明找到了

字符串排列

在这里插入图片描述

最小覆盖子串

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值