Menu
CoddyTech

Longest Increasing Subsequence

Otrzymujesz listę liczb całkowitych nums. Podciąg zachowuje niektóre elementy w ich pierwotnej kolejności, a pozostałe pomija; zachowane elementy nie muszą znajdować się obok siebie. Zwróć długość najdłuższego podciągu, którego wartości ściśle rosną od lewej do prawej. Dwie równe wartości występujące kolejno nie oznaczają wzrostu.

Funkcja

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
lista liczb całkowitych, z których można wybierać
Zwracainteger
długość najdłuższego ściśle rosnącego podciągu

Ograniczenia

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

Przykłady

Wejście
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Wyjście
4
Wyjaśnienie
Pozostawienie 1, 2, 5, 9 daje rosnący podciąg o długości 4, podobnie jak 1, 2, 5, 7 oraz 1, 2, 4, 7. Nie ma wyboru pięciu wartości, który zachowywałby rosnącą kolejność, więc odpowiedź wynosi 4.

lock icon+20 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy potrafisz zwrócić jedną najdłuższą rosnącą podsekwencję, a nie tylko jej długość, i nadal działać w czasie O(n log n)?

Zresetuj kod
def lengthOfLIS(nums):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

4