Menu
CoddyTech

Longest Increasing Subsequence

Ti viene fornita una lista di interi nums. Una sottosequenza mantiene alcuni elementi nell’ordine originale e scarta gli altri; gli elementi mantenuti non devono essere necessariamente adiacenti. 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 interi da 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
Mantenendo 1, 2, 5, 9 si ottiene una sottosequenza crescente di lunghezza 4, così come con 1, 2, 5, 7 e 1, 2, 4, 7. Non è possibile scegliere cinque valori che continuino a crescere, quindi la risposta è 4.

lock icon+20 test nascosti all’invio

challenge icon

Per approfondire

Puoi restituire una delle sottosequenze crescenti più lunghe, non solo la sua lunghezza, e impiegare comunque un tempo O(n log n)?

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

4