Мини-урок · перед практикой

Максимальное число идущих подряд равных элементов

Следим за длиной текущей серии одинаковых чисел и лучшей длиной.

Как к ней подойти

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

Коротко о теме

Цикл while продолжается, пока условие истинно. Продумайте, какое значение меняется на каждом шаге и почему цикл когда-нибудь завершится. Проверяйте как обычный ввод, так и случай, когда тело цикла выполняется ноль раз.

Ключевая идея · Один проход без хранения последовательности

Повтор продолжает серию, смена числа начинает серию длины 1. Максимум обновляется на каждом элементе.

Проверьте перед запуском

  • Нужны повторы подряд, а не общая частота числа.
  • Последняя серия также должна участвовать в максимуме.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Один проход без хранения последовательности

Повтор продолжает серию, смена числа начинает серию длины 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) для сохранённой последовательности.