Максимальная серия
Максимальная серия — это самая длинная непрерывная последовательность элементов массива или строки, каждый из которых обладает одним и тем же заданным свойством. Например, можно искать самый длинный фрагмент положительных чисел или одинаковых символов.
Обработка выполняется слева направо. Текущая серия хранит длину фрагмента, заканчивающегося в рассмотренной позиции. Если очередной элемент подходит по условию, длина текущей серии увеличивается на 1. Если не подходит, текущая серия завершается и её длина сравнивается с найденным максимумом, после чего текущая длина обнуляется.
Для последовательности \(2, 5, 7, -1, 4, 6, 8\) ищем максимальную серию положительных чисел. Серии имеют длины 3 и 3, поэтому ответ — \(3\). После обработки каждого элемента максимум нужно обновлять сразу: последняя серия может закончиться в самом конце последовательности.
Обработка последовательности с поиском максимальной серии отвечает на вопрос «какова длина самой длинной серии?». Это не то же самое, что количество серий: там считают, сколько отдельных серий встретилось, а не длину лучшей из них.
Какова максимальная серия положительных чисел в последовательности \(-2, 4, 6, -1, 3, 5, 7\)?
В строке принцип тот же: условием может быть, например, принадлежность символа к цифрам или равенство заданному символу. Важно не пропускать сравнение максимума после последнего элемента; иначе серия, заканчивающаяся в конце массива или строки, не будет учтена.
Главное
- Серия состоит из непрерывно идущих элементов, удовлетворяющих одному условию.
- Хранят длину текущей серии и максимальную длину среди уже найденных.
- При нарушении условия текущую длину сбрасывают, а максимум обновляют также после завершения всей последовательности.