Menu
CoddyTech

Longest Increasing Subsequence

Você recebe uma lista de números inteiros nums. Uma subsequência mantém alguns dos elementos, na ordem original, e descarta os demais; os elementos mantidos não precisam estar lado a lado. Retorne o comprimento da subsequência mais longa cujos valores aumentam estritamente da esquerda para a direita. Dois valores iguais em sequência não contam como crescentes.

Função

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
a lista de números inteiros para escolher
Retornainteger
o comprimento da subsequência estritamente crescente mais longa

Restrições

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

Exemplos

Entrada
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Saída
4
Explicação
1, 2, 5, 9 é crescente, assim como 1, 2, 5, 7 e 1, 2, 4, 7: comprimento 4. Nenhuma escolha de cinco valores continua crescente.
challenge icon

Para ir além

Você consegue retornar uma das subsequências crescentes mais longas, além do seu comprimento, e ainda executar em O(n log n) de tempo?

Redefinir código
def lengthOfLIS(nums):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

4