¿Cómo encontrarías la línea que contiene el mayor número de puntos dispersos en una cuadrícula 2D?

Aquí hay un algoritmo [matemático] O (n ^ 2 D) [/ matemático], donde tiene puntos [matemático] n [/ matemático] en el espacio dimensional [matemático] D [/ matemático].

Para cada punto [matemática] X [/ matemática], haga lo siguiente:

  • Observe cualquier otro punto [matemática] Y [/ matemática] y calcule la dirección del vector unitario que apunta a [matemática] Y [/ matemática]. Forzar la primera coordenada distinta de cero del vector para que sea positiva.
  • Almacene todos estos vectores unitarios como claves en un mapa hash, donde el valor asociado con un vector unitario es la cantidad de veces que el vector unitario aparece sobre todos los demás puntos [matemática] Y [/ matemática].
  • Determine el recuento más grande en el mapa hash.

Ahora, descubra qué punto tiene la cuenta más grande, y el vector unitario asociado con esa cuenta le da la línea con más puntos. Se necesita trabajo de [matemáticas] O (nD) [/ matemáticas] para hacer todo este trabajo para un solo punto, por lo que se necesita [matemáticas] O (n ^ 2 D) [/ matemáticas] en general para determinar qué línea tiene La mayoría de los puntos.

More Interesting

Como entrevistador, ¿seleccionará a un entrevistado que haya escrito el siguiente código para rotar una matriz 90 grados hacia la izquierda (sin usar estructuras de datos adicionales) en comparación con la solución dada en el libro de Gayle Laakmaan Cracking the Coding Interview?

Hay algunos problemas en Cracking the Coding Interview (sexta edición) que tienen una solución de más de 1 o 2 páginas. ¿Cuál es la posibilidad de que se pregunte durante una entrevista de pizarra?

Cómo saber qué error cometiste en una entrevista después de ser rechazado

Cómo abordar sistemáticamente los problemas de retroceso

Si descifras la entrevista de Google por pura suerte de obtener solo preguntas fáciles, ¿qué pasará contigo a la larga? ¿Eventualmente prosperarás o te las arreglarás?

¿Cómo sé si estoy listo para programar un trabajo (y una entrevista) en Google?

¿Cómo debo comenzar a revisar de manera competente mis conceptos de C / C ++ para entrevistas?

¿Cuál es la mejor manera de pensar acerca de los problemas de escalabilidad en la programación de entrevistas?

Una pregunta de entrevista CS: ¿Cómo escribo una cola de mensajes desde cero?

¿Vale la pena tomarse un pequeño descanso en la carrera para prepararse bien para entrevistas para trabajos aún mejores?

En entrevistas técnicas, ¿debería hablar mientras codifica la solución? Cuando el entrevistador le pide que lo escriba, ¿debe explicar su código al entrevistador mientras lo escribe, o debe escribir el código en silencio?

Cómo evitar mostrar mi transcripción durante el proceso de entrevista

Tengo una entrevista MakeMyTrip en una semana para un puesto de desarrollador de Java. ¿Qué preguntas y temas puedo esperar?

¿Cuál es el mejor algoritmo para eliminar cualquier nodo en un BST?

Si la resolución de problemas algorítmicos es lo que quieren probar, ¿por qué no contratan directamente a los mejores codificadores o fuerzas de código?