Logo
Section 1 / 15

章节概览

了解本章我们将涵盖的内容。

导入

章节概览

了解本章我们将涵盖的内容。

Course Image

“动画不是会动的图画艺术,而是用画出来的动作构成的艺术。” —— 诺曼·麦克拉伦

在本章中,我们将学习滑动窗口技术及其各种应用场景。

当我们需要对某个较小的子区域进行顺序上的全面搜索时,可以使用滑动窗口技术。

窗口可以是固定大小的,也可以是动态变化的。该技术通过在数组元素或任意数据缓冲区上滑动一个窗口,来执行所需的操作。

相比暴力搜索等朴素方法,滑动窗口技术能帮助我们编写更高效的代码。例如,使用滑动窗口技术可以更高效地求解数组中元素的最大和,或在单词中查找指定的变位词(即通过重新排列字母组成的词)。例如,“shrub” 是 “brush” 的一个变位词。

该技术的典型应用场景包括:

  • 需要在字符串、整数数组或链表上进行连续或顺序遍历的问题。
  • 涉及某种比较条件或特定操作的问题。例如,寻找包含最多 k 个不同字符的最长子串,或寻找和最大/最小的子数组。此外,也可以利用该技术判断某个单词中是否包含特定字符。

多维数组

通过滑动窗口在一维数组中进行搜索