Menu
CoddyTech

Longest Increasing Subsequence

Bir tamsayı listesi nums alırsınız. Bir alt dizi, öğelerin bazılarını özgün sıralarında tutar ve geri kalanları çıkarır; tutulan öğelerin yan yana olması gerekmez. Değerleri soldan sağa kesin olarak artan en uzun alt dizinin uzunluğunu döndürün. Art arda gelen iki eşit değer artış olarak sayılmaz.

Fonksiyon

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
Seçim yapılacak tamsayıların listesi
Döndürürinteger
en uzun kesin artan alt dizinin uzunluğu

Kısıtlar

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

Örnekler

Girdi
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Çıktı
4
Açıklama
1, 2, 5, 9 değerlerini tutmak, uzunluğu 4 olan artan bir alt dizi verir; 1, 2, 5, 7 ve 1, 2, 4, 7 de aynı şekilde. Beş değerlik hiçbir seçim sürekli artmaz, dolayısıyla cevap 4'tür.

lock iconGönderirken +20 gizli test

challenge icon

Ek soru

Yalnızca uzunluğunu değil, en uzun artan alt dizinin kendisini de döndürebilir ve bunu yine O(n log n) zamanda yapabilir misin?

Kodu sıfırla
def lengthOfLIS(nums):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

4