Максимальное число идущих подряд равных элементов
Вы решили задачу. Теперь можно сравнить подходы.
Следим за длиной текущей серии одинаковых чисел и лучшей длиной.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Один проход без хранения последовательности
Повтор продолжает серию, смена числа начинает серию длины 1. Максимум обновляется на каждом элементе.
previous = None
run = best = 0
while True:
x = int(input())
if x == 0:
break
run = run + 1 if x == previous else 1
best = max(best, run)
previous = x
print(best)
Время: O(n). Память: O(1) числовых переменных.
Другой способ: Сохранение и обработка списка
groupby объединяет только подряд идущие одинаковые значения; считаем размер каждой группы.
a = []
while True:
x = int(input())
if x == 0:
break
a.append(x)
from itertools import groupby
print(max((sum(1 for _ in group) for _, group in groupby(a)), default=0))
Время: O(n). Память: O(n) для сохранённой последовательности.
На что обратить внимание
- Нужны повторы подряд, а не общая частота числа.
- Последняя серия также должна участвовать в максимуме.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.