Sé que este tipo de pregunta se ha publicado anteriormente, pero quiero hablar de algo nuevo. Por lo tanto, lo estoy publicando.encontrar trillizos
Dada una matriz no ordenada de enteros, encuentre todos los trillizos que satisfagan x^2 + y^2 = z^2.
Por ejemplo, si matriz dada es - 1, 3, 7, 5, 4, 12, 13 La respuesta debería ser - 5, 12, 13 y 3, 4, 5
I se sugiere a continuación algo con complejidad O (n^2) -
- Ordene la matriz en orden descendente. - O (nlogn)
- cuadrado cada elemento. - O (n)
Ahora se reduce el problema de encontrar todos los trillizos (a, b, c) en una matriz ordenada tal que a = b + c.
El entrevistador insistía en una solución mejor que O (n^2).
He leído 3SUM problem on Wikipedia, que enfatiza que el problema se puede resolver en O (n + ulogu) si los números están dentro del rango [-u, u] suponiendo que la matriz se puede representar como un vector de bits. Pero no puedo obtener una idea clara de más explicaciones.
¿Puede alguien ayudarme a comprender lo que está pasando con un buen ejemplo?
http://en.wikipedia.org/wiki/Pythagorean_triple – leppie
otra pregunta de entrevista que el entrevistador estudió durante 3 horas y solicitó una solución óptima del entrevistado en 5 minutos –
@ 動靜 能量 QFT. Este tipo de pregunta es realmente inútil para determinar un potencial candidato. O (n^2) debería ser lo suficientemente bueno para esta trivia. Cuando necesite el rendimiento O (n + u.log (u)), tendrá mucho más tiempo para diseñarlo – Martheen