Menu
CoddyTech

Longest Increasing Subsequence

Ti viene fornito un elenco di numeri interi nums. Una sottosequenza conserva alcuni elementi, nel loro ordine originale, e scarta gli altri; gli elementi conservati non devono necessariamente essere consecutivi. Restituisci la lunghezza della sottosequenza più lunga i cui valori aumentano strettamente da sinistra a destra. Due valori uguali consecutivi non contano come un aumento.

Funzione

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
l’elenco di numeri interi tra cui scegliere
Restituisceinteger
la lunghezza della sottosequenza strettamente crescente più lunga

Vincoli

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

Esempi

Input
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Output
4
Spiegazione
1, 2, 5, 9 cresce, e così anche 1, 2, 5, 7 e 1, 2, 4, 7: lunghezza 4. Nessuna scelta di cinque valori continua a crescere.
challenge icon

Per approfondire

Puoi restituire una delle sottosequenze crescenti più lunghe, insieme alla sua lunghezza, continuando a impiegare un tempo O(n log n)?

Ripristina il codice
def lengthOfLIS(nums):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

4