- некие точки на плоскости.
Написать алгоритм, определяющий, обладает ли множество точек осью симметрии относительно оси, параллельной оси
. Должен работать по времени за
.
-- 12.07.2019, 22:28 --Идея такая. Пройтись один раз по списку кортежей из точек и определить самую большую координату по модулю
. Затем сортировать слиянием по параметру
. Затем копию списка сортировать по параметру
и слить вторую половину копии в первую. Тогда получим список отсортированный по
, где первая половина, в случае равности
-координат отсортирована по возрастанию
, вторая по убыванию. Тогда останется написать функцию, которая будет дергать по одному элементу сначала и с конца списка и проверять полусумму
-координат с потенциальной осью симметрии. В случае равности - проверять на равность координаты
.
Все бы очень хорошо, но получается довольно громоздко, а так не должно быть. Еще и затратно по памяти. Есть другие идеи?