Наклон - это отношение (delta_y)/(delta_x)
, где delta_y
и delta_x
измеряются между соответствующими точками.
Соотношение, вычисляемое вашим методом, составляет (y_i - y_j)/(x_k - x_l)
для некоторых i
, j
, k
и l
, которые увеличивают y_i - y_j
и минимизируют x_k - x_l
. Но обратите внимание, что ни один из (x_k, y_i)
или (x_l, y_j)
, скорее всего, не будет баллами из указанных n
баллов. То есть ваш метод не измеряет delta_y
и delta_x
в соответствующих точках.
Чтобы прийти к методу, который работает, рассмотрим сортировку точек в порядке возрастания по x
координате, что занимает O (n log n) времени. Затем за время O (n) проверьте, имеют ли какие-либо две точки одинаковую x
координату. Если это так, существует бесконечный или неопределенный уклон. Еще рассмотрим уклоны между последовательными точками. Можно доказать, что самый крутой уклон между любой двумя из n
точек происходит между последовательными точками, когда точки сортируются по возрастанию x
. Следовательно, можно найти максимальный наклон за время O (n) после использования времени O (n log n) для сортировки точек.