Con la complejidad de O (n) u O (1) u O (log n), ¿cómo encuentro cuándo se romperá una bola rompible cuando se lance desde un piso de un edificio que tiene más de 100 pisos?

Si tiene ‘una pelota’, entonces puede encontrar el piso desde el cual la pelota se romperá en [matemática] O (n) [/ matemática], debe verificar desde el 1 ° hasta el n ° piso, donde la pelota se rompa será la solución . En el peor de los casos, tendrá que verificar hasta el enésimo piso.

Sin embargo, si tiene dos bolas, entonces la solución se convertirá en la que será esencialmente la solución de la ecuación [matemáticas] x ^ 2 + x-2 * n [/ matemáticas].
por ejemplo, si tiene 10 pisos, entonces
1) deje caer el primero desde el 4to piso, si eso se rompe, tome el 2do y comience a caer desde el piso 0.
2) si el primero no se rompe, déjelo caer del 7 ° y verifique el segundo del 5 ° al 7 °.
3) si el primero no se rompe, déjelo caer del noveno y así sucesivamente.

entonces, la solución está en [matemática] O ((sqrt (8 * n + 1) -1) / 2) [/ matemática] o para ser muy preciso [matemática] O (sqrt (n)) [/ matemática]

referencia: 2 huevos 100 pisos

Entonces, para la complejidad O (N), debe comenzar desde el piso 0 hasta N y ver si se rompe o no

Para la complejidad O (LogN). Utilice la búsqueda binaria con high = ny low = 0 .. Si la pelota se rompe en un punto, ya está

de lo contrario, si no se rompe, verifique los pisos superiores … (aquí debemos verificar si se rompe o no. Por lo tanto, no es necesario encontrar el número de piso perfecto en el que se rompe)

Ahora aquí viene la respuesta ardiente

Para O (1). Solo tíralo desde el enésimo piso. Si se rompe, entonces sí. Si no, entonces no

Happy Coding 🙂

Si tiene suficientes bolas para probar, puede resolverlo en pruebas O (log n) utilizando la búsqueda binaria. Si tiene suficientes amigos para ayudarlo, puede paralelizarlo y dejar caer una pelota desde cada piso simultáneamente para hacerlo en la cantidad de tiempo de una sola prueba para obtener la complejidad O (1).

More Interesting

¿Cuáles son algunos algoritmos utilizados por las grandes empresas (como Amazon) para determinar de manera eficiente desde qué almacén se debe cumplir un pedido?

¿Cuál es la mejor manera de explicar este método recursivo en Java?

¿Puedo diseñar una estructura de datos tipo pila que haga popMin () en tiempo O (1)?

¿Cuál es la diferencia entre el algoritmo codicioso y la programación dinámica? ¿Es un programa codicioso un subconjunto de programación dinámica?

¿Dónde aprendo árboles AVL?

¿Puedo mejorar el rendimiento del árbol negro rojo eliminando los nodos negros cero o usando el valor centinela?

Cómo mostrar que el algoritmo de Kruskal devuelve un árbol de expansión

Cómo entender la precisión Top-N en el aprendizaje automático de una manera simple

¿Cuál es el problema matemático más difícil que existe?

¿Por qué debería vivir si mis problemas nunca se resuelven?

¿Cuán ampliamente se utilizan los algoritmos de bandidos en los sistemas de recomendaciones modernos reales? ¿Y de qué manera?

¿Cómo podemos revertir una pila usando solo las operaciones push () y pop () sin usar ningún DS secundario?

Si quiero resolver problemas del mundo real, ¿qué debo hacer, encontrar esos problemas y luego aprender las estructuras de datos y algoritmos requeridos o viceversa?

¿Cuál es la mejor manera de estudiar la estructura de datos de árbol?

Cómo encontrar un trabajo de programación de algoritmos y no solo escribir aplicaciones CRUD