Код Senior Скользящее окно обновлено
Самая короткая подстрока с k различными
Условие
Длина самой короткой подстроки, содержащей ровно k различных символов. Нет такой - 0.
Примеры
shortestWithK("abcba", 2) // 2
shortestWithK("aaaa", 1) // 1
shortestWithK("abc", 5) // 0
Как подойти
Окно переменной длины: расширяем right, чиним left в while, фиксируем ответ. Счётчик, дошедший до нуля, обязательно удалять из Map, иначе size перестанет отражать число различных символов.
Подсказки: 2
- Сжимай окно, пока различных больше k.
- Удаляй ключ из Map, когда его счётчик обнулился - иначе size врёт.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Кратчайший подмассив с суммой ≥ target
Следующий вопрос
Самая длинная подстрока без повторов: где начинается
Термины по теме
Ещё по теме «Скользящее окно»
- Самая длинная серия единиц с k заменами
- Перестановка как подстрока
- Самая длинная серия после k замен
- Самая длинная подстрока без повторов
- Максимальная сумма окна длины k
- Максимум гласных в окне
- Лучшие k дней подряд по выручке
- Минимальное окно, содержащее все символы шаблона