滑动窗口
7.19 滑动窗口
leetcode 不包含重复字符的最长子字符串
思路:关键字有重复字符,子字符串(连续)。考虑用map记录字符出现的次数。当发现有字符出现次数超过1,表示重复,则需要收缩左边界,更新全局变量res。
leetcode 滑动窗口最大值,窗口为k,求移动过程中每个窗口的最大值。
思路:考虑用deque实现,存储每个窗口最大值的index,这样既可以保证最大值的index在窗口内,也可以获得最大值本身。在窗口移动过程中,首先移除deque中不在窗口范围的index,之后移除比当前访问值小的index,这样deque的头就是本窗口最大值的下标。需要注意的是,只有当i>=k-1时,才开始记录最大值。
leetcode 求字符串s中包含字符串t的最小子串
思路:用map记录t中字符出现的次数。在遍历s的过程中,先向右扩展,发现当前的子串已经包含了所有的T中元素后,收缩左边界。直到当收缩到t中字符时,将count减一,移动左边界。用全局变量更新遍历过程中的最小子串长度和起始位置。

