Ctrl K

Без вмятин

Средняя
Участок земли обнесён забором. Столбы забора стоят в точках corners, где corners[i] = [x, y], и забор идёт от столба к столбу по порядку, а от последнего — обратно к первому. Гарантируется, что забор нигде сам себя не пересекает и не касается: в каждом столбе сходятся ровно два соседних пролёта, и больше общих точек у пролётов нет. Верните True, если получившийся многоугольник выпуклый — то есть ни один его угол не «вдавлен» внутрь, — и False иначе. Столб посреди прямого участка забора (три столба на одной прямой подряд) выпуклости не нарушает.
Пример 1
corners=[[0, 0], [4, 0], [6, 3], [2, 5], [-1, 2]] → True

Обходя контур, всё время поворачиваем в одну сторону (налево) — вмятин нет.

Пример 2
corners=[[0, 0], [6, 0], [6, 6], [3, 2], [0, 6]] → False

В вершине [3, 2] контур поворачивает в другую сторону — это вмятина внутрь.

Пример 3
corners=[[0, 0], [2, 0], [4, 0], [4, 3], [0, 3]] → True

Вершина [2, 0] лежит прямо на стороне — это не вмятина, многоугольник выпуклый.

Ограничения
  • 3 ≤ len(corners) ≤ 10⁴
  • corners[i].length == 2
  • -10⁴ ≤ x, y ≤ 10⁴
  • Все точки различны
  • Многоугольник простой: стороны не пересекаются и не накладываются
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый маленький загон СредняяСамый маленький прямоугольник из булавок СредняяБлижайшие к базе точки СредняяУстройства в зоне роутера СредняяСамая длинная цепочка салюта Средняя
загружаем Python…
Вход
corners=[[0, 0], [4, 0], [6, 3], [2, 5], [-1, 2]]
Ожидается
True

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