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 aumento.

Função

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

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
Manter 1, 2, 5, 9 resulta em uma subsequência crescente de comprimento 4, assim como 1, 2, 5, 7 e 1, 2, 4, 7. Nenhuma escolha de cinco valores continua crescendo, então a resposta é 4.

lock icon+20 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue retornar uma subsequência crescente mais longa, e não apenas seu comprimento, ainda executando em O(n log n)?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

4