Ctrl K

Вертикальная ось симметрии

Средняя
На плоскости отмечены точки dots, каждая задана парой [x, y]. Некоторые точки могут совпадать. Определите, существует ли вертикальная прямая (параллельная оси Y), относительно которой множество точек симметрично: если отразить каждую точку относительно этой прямой, получится то же самое множество точек. Верните True, если такая прямая есть, иначе False. Попробуйте обойтись без перебора всех пар точек.
Пример 1
dots=[[2, 5], [6, 5], [4, 1]] → True

Прямая x = 4: точки (2, 5) и (6, 5) переходят друг в друга, а (4, 1) лежит на самой прямой.

Пример 2
dots=[[0, 0], [2, 1]] → False

Точки на разной высоте, поэтому вертикальная прямая не может перевести одну в другую.

Пример 3
dots=[[3, 7], [3, 7], [1, 2], [5, 2]] → True

Повторы не мешают: подходит прямая x = 3.

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

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