滑动窗口(Sliding Window)

滑动窗口算法用于解决数组或字符串中满足特定条件的连续子序列问题。分为固定大小和不固定大小两种情况。文章详细介绍了如何使用滑动窗口解决包括最大点数、字母异位词、无重复字符子串等在内的经典问题,并提供了通用的算法框架。
摘要由CSDN通过智能技术生成

窗口大小固定:

固定初始化左右指针l和r,分别表示窗口的左右顶点

 

  1. l初始化为0
  2. 初始化r,使得r-l+1等于窗口大小
  3. 同时移动l和r
  4. 判断窗口内的连续元素是否满足题目的限定条件
  5. 如果满足,再判断是否需要更新最优解,如果需要则更新最优解;如果不满足,则继续

题目:

1423. 可获得的最大点数

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

窗口大小不固定:

固定初始化左右指针l和r,分别表示窗口的左右顶点

  1. l和r都初始化为0
  2. r指针移动一步
  3. 判断窗口内的连续元素是否满足题目的限定条件
  4. 如果满足,再判断是否需要更新最优解,如果需要则更新最优解。并尝试通过移动l指针缩小窗口大小,循环执行本步骤;如果不满足,则继续

r指针不停向右移动,l指针仅仅在窗口满足条件之后才会移动,起到窗口收缩的效果

题目:

209. 长度最小的子数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值