本文参考:
题单:分享丨【题单】滑动窗口(定长/不定长/多指针) - 力扣(LeetCode)
本文主要通过Leetcode平台和上面的题单来进一步提炼出一些有意思的,值得反复练习的题目
可以反复尝试和练习,不论是面试还是打算法竞赛,还是单纯的爱好,都有或多或少的帮助
滑动窗口算法原理详解文章可以看我的文章:
本文讲解的题目(建议先尝试一下再看题解):
(题目后面的数字表示难度分,可以直接点击链接跳转到题目)
- 2090. 半径为 k 的子数组平均值 1358
- 904. 水果成篮 1516
- 2024. 考试的最大困扰度 1643
觉得文章写的好可以点个赞,下个星期争取更新中等题和困难题的题解,还有二分查找算法
最近codeforces比赛也挺多的,会有点忙
题一:
题目大意和思路:
两个字符串,判断s2是否包含s1的排列
也就是说字符串s2中是否存在一段连续子字符串满足:
长度与s1相等,且所含有字母跟s1一样
可以维护一个长度等于s1的窗口来遍历s2
先统计开始窗口的字符
窗口开始滑动,维护出来的字符和进入的字符
统计字符数量可以用哈希表来处理
注意:如果使用哈希表处理,那么当窗口内某元素个数为0时候,要删除这个键
哈希表做法(Python):
class Solution:
d