Menu
CoddyTech

Longest Increasing Subsequence

Vous obtenez 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. Renvoyez 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
Conserver 1, 2, 5, 9 donne une sous-séquence croissante de longueur 4, tout comme 1, 2, 5, 7 et 1, 2, 4, 7. Aucun choix de cinq valeurs ne reste croissant, donc la réponse est 4.

lock icon+20 tests cachés à la soumission

challenge icon

Pour aller plus loin

Pouvez-vous renvoyer une plus longue sous-séquence croissante elle-même, et pas seulement sa longueur, tout en conservant une complexité temporelle de O(n log n) ?

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

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

4