Menu
CoddyTech

Longest Increasing Subsequence

Recibes una lista de enteros nums. Una subsecuencia conserva algunos de los elementos, en su orden original, y descarta el resto; los elementos conservados no tienen que estar uno al lado del otro. Devuelve la longitud de la subsecuencia más larga cuyos valores aumentan estrictamente de izquierda a derecha. Dos valores iguales seguidos no cuentan como un aumento.

Función

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
la lista de enteros entre los que elegir
Devuelveinteger
la longitud de la subsecuencia estrictamente creciente más larga

Restricciones

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

Ejemplos

Entrada
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Salida
4
Explicación
1, 2, 5, 9 aumenta, y lo mismo ocurre con 1, 2, 5, 7 y 1, 2, 4, 7: longitud 4. Ninguna elección de cinco valores sigue aumentando.
challenge icon

Para ir más allá

¿Puedes devolver una subsecuencia creciente más larga, junto con su longitud, y seguir ejecutándote en tiempo O(n log n)?

Restablecer código
def lengthOfLIS(nums):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

nums = [3, 1, 8, 2, 5, 9, 4, 7]

Salida Esperada

4