Menu
CoddyTech

Longest Increasing Subsequence

On te donne une liste d’entiers nums. Une sous-séquence conserve certains éléments dans leur ordre d’origine et supprime les autres ; les éléments conservés n’ont pas besoin d’être côte à côte. Retourne la longueur de la plus longue sous-séquence dont les valeurs augmentent strictement de gauche à droite. Deux valeurs égales à la suite ne comptent pas comme une augmentation.

Fonction

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
la liste des entiers parmi lesquels choisir
Renvoieinteger
la longueur de la plus longue sous-séquence strictement croissante

Contraintes

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

Exemples

Entrée
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Sortie
4
Explication
1, 2, 5, 9 est une suite croissante, tout comme 1, 2, 5, 7 et 1, 2, 4, 7 : longueur 4. Aucun choix de cinq valeurs ne forme une suite croissante.
challenge icon

Pour aller plus loin

Peux-tu renvoyer une des plus longues sous-séquences croissantes elle-même, ainsi que sa longueur, tout en conservant une complexité de O(n log n) ?

Réinitialiser le code
def lengthOfLIS(nums):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

4