Войти Регистрация
Алгоритмы

5. Серия единиц, если удалить один элемент

Средняя

Дан массив из нулей и единиц. Удалите из него ровно один элемент так, чтобы получилась самая длинная непрерывная серия единиц. Верните её длину.

Удалить элемент нужно обязательно, даже если в массиве одни единицы. Требование из отчёта: время O(n), дополнительная память O(1).

В работе: Самая длинная серия рабочих дней сервиса, если один день инцидента можно списать как плановые работы.

Пример 1

Ввод
arr = [1, 1, 0, 1]
Вывод
3

Удаляем ноль — остаётся 1, 1, 1.

Пример 2

Ввод
arr = [1, 1, 1]
Вывод
2

Удалить нужно обязательно.

Ограничения

  • 1 ≤ длина arr ≤ 300 000 (в JavaScript — до 2 000 000)
  • Элементы — только 0 и 1
  • Лимит — 1 с на тест.
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def longest_after_delete(arr: list[int]) -> int:
Скользящее окноМассивцельO(n)

Источник: отчёт о Яндексе, 2023. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.