滑动窗口模板

0X00 模板

# nums 是数组 i, j 是下标
m = len(nums)
i, j = 0, 0
for i in range(m):
    while j < m:
        if not condition():
            something1()
            j += 1
        else:
            break
    if condition():
        something2()

0X01 注意事项

  • 一定要注意 j 这个下标很容易错

一旦 break 了 j 下标的那个元素是不属于窗口的

0X02 相关题目

    1. 无重复字符的最长子串
    1. Remove Nth Node From End of List (用了一个固定窗口的思想, 但不是用那个模板做的)
    1. 串联所有单词的子串
    1. 最小覆盖子串
    1. 至多包含两个不同字符的最长子串
    1. 长度最小的子数组
    1. 滑动窗口最大值
    1. 至多包含 K 个不同字符的最长子串
    1. 找到字符串中所有字母异位词
    1. 字符串的排列
    1. 最小区间
    1. 最小窗口子序列

你可能感兴趣的:(滑动窗口模板)