Esta es una pregunta que me pidieron en una entrevista de trabajo hace algún tiempo. Y todavía no puedo encontrar una respuesta sensata.¿Cómo encontrar dos puntos más distantes?
La pregunta es:
se le da conjunto de puntos (x, y). Encuentra 2 puntos más distantes. Distante el uno del otro.
Por ejemplo, para los puntos: (0,0), (1,1), (-8, 5) - los más distantes son: (1,1) y (-8,5) porque la distancia entre ellos son más grandes de ambos (0,0) - (1,1) y (0,0) - (- 8,5).
El enfoque obvio es calcular todas las distancias entre todos los puntos y encontrar el máximo. El problema es que es O (n^2), lo que hace que sea prohibitivamente costoso para grandes conjuntos de datos.
Hay un acercamiento con los primeros puntos de seguimiento que están en el límite, y luego calcular distancias para ellos, bajo la premisa de que habrá menos puntos en el límite que "adentro", pero sigue siendo costoso y fallará en el peor de los casos.
Intenté buscar en la Web, pero no encontré ninguna respuesta sensata, aunque esto podría ser simplemente mi falta de habilidades de búsqueda.
¿Fue "hace algún tiempo" del orden de una hora? ;-) –
Si puede hacer la clasificación en O (nlogn), intente usarla. –
¿Qué quieres decir, Gabriel? Ordenar por qué? –