foundation

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

Поддерживайте moving range, обновляйте aggregate state и shrink/expand по чёткому инварианту.

Sliding window поддерживает contiguous range и обновляет aggregate state при expand или shrink. Fixed windows имеют предсказуемое движение; variable windows требуют invariant вроде at most k distinct characters, sum not exceeding target или all required characters covered.

Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.

На интервью: Хорошее объяснение называет, что хранится в window, когда двигается left pointer и почему каждый element входит и выходит максимум один раз.

Типовые ошибки: Negative numbers могут ломать sum-based shrink rules. Забытый decrement в frequency maps дает stale state. Nested while loops все еще могут быть O(n), когда movement monotonic.

Чеклист:

  • Определите fixed или variable window.
  • Поддерживайте aggregate state.
  • Двигайте left по invariant.
  • Объясните O(n) через monotonic movement.