Когда окно покрывает весь нужный алфавит, запомните его как кандидата и двигайте левую границу вправо, пока покрытие сохраняется. Так убираются лишние символы и находится самое короткое окно для текущей правой границы.
По какому принципу нужно двигать левую границу окна, когда оно уже покрывает весь алфавит?
Когда окно покрывает весь нужный алфавит, запомните его как кандидата и двигайте левую границу вправо, пока покрытие сохраняется. Так убираются лишние символы и находится самое короткое окно для текущей правой границы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Когда окно покрывает весь нужный алфавит, запомните его как кандидата и двигайте левую границу вправо, пока покрытие сохраняется. Так убираются лишние символы и находится самое короткое окно для текущей правой границы.
При удалении левого символа уменьшают его счётчик. Если количество стало меньше необходимого, окно перестаёт быть допустимым и нужно снова расширять правую границу. Неважные символы и лишние повторения можно пропускать без потери покрытия. Условие должно учитывать постановку: множество требуемых символов или их кратности. Каждый указатель идёт только вперёд, что даёт линейное число сдвигов.