Ctrl K

Горизонталь через график

Сложная
На плоскости нарисован график-ломаная: его k-я вершина (нумерация с единицы) стоит в точке (k, heights[k - 1]), а соседние вершины соединены отрезками. Две соседние вершины никогда не стоят на одной высоте, так что горизонтальных отрезков нет. Проведём бесконечную горизонтальную прямую на любой высоте (не обязательно целой). Верните наибольшее число точек, в которых она может пересечь ломаную. Вершина, через которую проходит прямая, считается одной точкой.
Пример 1
heights=[2, 4, 1, 3, 2, 4] → 5

Прямая на высоте 2.5 пересекает все пять отрезков ломаной. Больше пяти точек не бывает: у ломаной всего пять отрезков.

Пример 2
heights=[1, 5] → 1

Ломаная — один отрезок, любая подходящая прямая пересекает его в одной точке.

Пример 3
heights=[3, 1, 3, 1, 3] → 4
Ограничения
  • 2 ≤ len(heights) ≤ 10⁵
  • 1 ≤ heights[i] ≤ 10⁹
  • heights[i] ≠ heights[i + 1]
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧистый прямоугольник на кнопках СложнаяПустой прямоугольник по точкам СредняяЗвёзды на одной прямой СложнаяПересечёт ли робот свой след СложнаяВерёвка вокруг столбов Сложная
загружаем Python…
Вход
heights=[2, 4, 1, 3, 2, 4]
Ожидается
5

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 173 теста на сервере, включая скрытые.