刷题总结 | 灵神 | 滑动窗口作业

刷题总结 | 灵神 | 滑动窗口作业

1.滑动窗口使用前提

  1. 连续子数组
  2. 有单调性。比如数组元素均为正数,这意味着只要某个子数组满足题目要求,在该子数组内的更短的子数组同样也满足题目要求。

2.核心思路

1.固定右端点

2.遍历右端点

3.寻找左指针收缩条件,即while循环的条件,while循环的作用就是让不满足条件的子数组变成满足条件的子数组

也有些时候是while循环是让满足条件变成不满足条件,这时更新答案就是在while循环内了,因为while循环内才是满足题目条件的情况

一般情况题目条件就是左指针的收缩条件,左指针收缩条件的实现一般都是解题的关键点

4.看满足题目条件的情况是在whie循环外还是while循环内

5.在哪里满足题目条件就在哪里更新res

6.思考如何统计子数组的数量

注:虽然左指针收缩条件的实现一般是解题的关键点,但是如果是比较困难题目,可能在统计子数组数量,如何记录答案,答案更新条件的地方也会比较难想,笔者觉得需要多积累经验才会做着舒服点

3.每道题可能遇到的难点

1.如何统计子数组的数量,基本有以下两种

1.res+=(r-l+1);
2.res+=l

2.一开始做这方面题可能会想着的是,我在固定r时,把l移动了,那我在固定r+1的时候,需要不需要把l置为0?

这个一般都不需要,因为置为0可能就趋近于暴力做法了,而这道题可以用滑动窗口做,那肯定是不需要把l置为0的,如果非要置为0不可,那可能是左指针收缩条件没有找对。也有可能是自己觉得会漏掉情况,但是这个只要举个例子模拟一下就知道了到底会不会漏掉情况了。

4.题单

Day58 | 灵神 | 滑动窗口:长度最小的子数组&&乘积小于K的子数组&&无重复字符的最长子串-优快云博客

Day59 | 灵神 | 滑动窗口:最多K个重复元素的最长子数组&&找到最长的半重复子字符串-优快云博客

Day60 | 灵神 | 滑动窗口:最大连续1的个数III-优快云博客

Day61 | 灵神 | 滑动窗口:统计最大元素出现至少K次的子数组-优快云博客(需重点复习,统计子数组的方式方法)

Day62 | 灵神 | 滑动窗口:统计得分小于K的子数组数目-优快云博客

Day63 | 灵神 | 滑动窗口:将x减到0的最小操作数-优快云博客(需重点复习,思路的转变)

Day64 | 灵神 | 滑动窗口:最小覆盖子串-优快云博客(hard题还是hard题,思路比较简单,但是其他的细节的处理处理的很不好,需要复习)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值