Dados los edificios [math] N [/ math], puede hacer esto en [math] O (N \ log N) [/ math] time. Necesitará [math] O (N) [/ math] espacio auxiliar.
Primero, para cada edificio, cree un evento asociado con la coordenada x izquierda donde agreguemos un edificio con la altura del edificio actual. Creamos un segundo evento asociado con la coordenada x derecha donde eliminamos un edificio con la altura del edificio actual. Ponga todos estos eventos en una cola de prioridad, que los procesa en orden de coordenadas x crecientes.
Deberá mantener un conjunto de alturas que se pueden alcanzar actualmente. Este conjunto debe estar respaldado por un árbol binario equilibrado para admitir una inserción y eliminación eficientes. Si las alturas no son distintas, puede perturbarlas con pequeños épsilones para que todas las alturas sean distintas.
Ahora procesaremos los eventos desde la cola de prioridad en orden. Cuando llegamos a un evento donde creamos un edificio, agregamos la altura dada a nuestro conjunto. Si la coordenada x cambia en el próximo evento, también actualizaremos la altura máxima que hemos visto hasta ahora en nuestra coordenada x actual. Si llegamos a un evento cuando eliminamos un edificio, simplemente eliminamos esa altura de nuestro conjunto.
- Rompecabezas: ¿en qué contexto 257 + 258 es igual a 3?
- ¿Cuál puede ser la respuesta al siguiente problema? Hay 25 caballos. A la vez, solo 5 caballos pueden correr en la carrera individual. ¿Cuántas carreras mínimas se requieren para encontrar los 5 mejores caballos más rápidos? (Sin temporizador)
- Rompecabezas: ¿Cómo podrías crear una pila de papel tan alta como el Empire State Building?
- Tu última buena pelota de ping-pong cayó en un tubo de metal estrecho. ¿Cómo puede sacarlo sin daños, si todas las herramientas que tiene son su paleta de tenis y su botella de agua de plástico, que no cabe en la tubería?
- ¿Quién inventó el cubo de Rubik?
Una vez que tenemos estas alturas, se puede generar el horizonte dibujando líneas horizontales que se extiendan hacia la derecha desde una altura máxima hasta que se pueda lograr una nueva coordenada x.