Saltar al contenido

La subida más larga

Enunciado

Escribe una función que reciba una lista de números y regrese cuántos números tiene la subida más larga que se puede armar con ellos.

Una subida es un grupo de números que tomas de la lista sin cambiarlos de orden, y donde cada uno es más grande que el anterior. Lo importante: no tienen que estar seguidos en la lista, puedes saltarte los que estorben. Mira la lista 3, 10, 2, 1, 20. Si solo valieran los números pegados, lo mejor sería 3 y 10: dos. Pero te saltas el 2 y el 1, y te quedan 3, 10 y 20: tres números, cada uno más grande que el de antes y en el mismo orden en que aparecen. Por eso la respuesta es 3, aunque esos tres no estén pegados en la lista.

Las reglas: "más grande" es más grande de verdad, así que dos números iguales no continúan la subida. Con un solo número la respuesta es 1, y con la lista vacía es 0.

Una pista: recorre la lista y, para cada número, mira todos los anteriores que sean más chicos. La subida más larga que terminaba en alguno de ellos, más este número, es la subida más larga que termina aquí. Ve guardando ese resultado en otra lista para no volver a calcularlo.

Ejemplos

  • Sube y baja

    [10, 22, 9, 33, 21, 50, 41, 60] → 5

  • Tres que no están pegados

    [3, 10, 2, 1, 20] → 3

  • El más grande al principio

    [50, 3, 10, 7, 40, 80] → 4

  • Ya viene ordenada

    [1, 2, 3, 4, 5] → 5

  • De mayor a menor

    [9, 7, 5, 3] → 1

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

Empiezas con esto

Python

def subida_mas_larga(nums):
    pass

JavaScript

function subidaMasLarga(nums) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n²)

Ver todos los retos →