Saltar al contenido

La cumbre de la cresta

Enunciado

Casimiro guía grupos por una cresta de montaña, y antes de salir necesita saber dónde queda la cumbre. El perfil del recorrido viene tramo por tramo: sube sin parar hasta la cumbre y de ahí nada más baja. Nunca hay dos tramos seguidos a la misma altura.

Recibes la lista de alturas y regresas la posición del tramo más alto, contando desde 0. En 1, 4, 9, 7 y 3 la cumbre es el 9, que está en la posición 2.

La lista siempre trae al menos un tramo. Puede tocar que la cumbre sea el primero, cuando el perfil solo baja, o el último, cuando solo sube. Hay perfiles de hasta 100 tramos.

No se vale usar max, Math.max, indexOf ni el index de las listas de Python: recorrer el perfil entero es justo lo que Casimiro quiere evitar.

Idea: párate en el tramo de en medio y compáralo con el que le sigue. Si el siguiente está más alto, todavía vas subiendo y la cumbre queda a la derecha. Si está más bajo, ya vas bajando, así que la cumbre es ese tramo o alguno de los de atrás. Con eso tiras media lista en cada paso, aunque las alturas no vengan ordenadas.

Ejemplos

  • El ejemplo

    [1, 4, 9, 7, 3] → 2

  • La cumbre temprano

    [3, 8, 12, 20, 18, 11, 4, 1] → 3

  • El perfil solo sube

    [2, 5, 7, 10] → 3

  • El perfil solo baja

    [9, 6, 4, 1] → 0

  • Dos tramos, el primero más alto

    [4, 1] → 0

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def cumbre(alturas):
    pass

JavaScript

function cumbre(alturas) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.

Más retos de O(log n)

Ver todos los retos →