К справочнику

Основные алгоритмы и паттерны

Скользящее окно

При повторе left прыгает за прошлое вхождение.

Сигнал задачи

Когда применять

Ответ относится к непрерывному фрагменту с ремонтируемым инвариантом.

Что держать в голове

  • Уметь распознавать условия окна, ремонтируемые движением левой границы.
  • Уметь поддерживать инвариант уникальности непрерывной подстроки.

Сложность

  • При монотонных расширении и сжатии каждая граница проходит массив один раз: O(n) времени; память зависит от состояния окна.

Границы и ошибки

  • Нужно точно определить, когда окно допустимо и как удаление левого элемента восстанавливает инвариант.