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.
- ¿Cuál debería ser mi respuesta a esta pregunta de la entrevista de Java?
- ¿Cómo puedo equilibrar los paréntesis en una cadena usando un número mínimo de ediciones?
- Dada una matriz sin clasificar, ¿cómo podemos asignar cada valor al primer valor que viene después y es más grande (o asignar a -1 si no existe ese número)?
- ¿Cómo se puede obtener un puntaje de 3+ de manera consistente en cada ronda de entrevistas de Google?
- Teoría de grafos: ¿Cuál es el algoritmo más eficiente para encontrar el centro de un árbol?