Menu
CoddyTech

Longest Increasing Subsequence

Дан список целых чисел nums. Подпоследовательность сохраняет некоторые элементы в исходном порядке, а остальные пропускает; сохранённые элементы не обязательно должны стоять рядом. Верните длину самой длинной подпоследовательности, значения которой строго возрастают слева направо. Два одинаковых значения подряд не считаются возрастанием.

Функция

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
список целых чисел, из которых нужно выбрать
Возвращаетinteger
длина наибольшей строго возрастающей подпоследовательности

Ограничения

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

Примеры

Ввод
nums = [3, 1, 8, 2, 5, 9, 4, 7]
Вывод
4
Пояснение
1, 2, 5, 9 возрастают, как и 1, 2, 5, 7 и 1, 2, 4, 7: длина 4. Ни один набор из пяти значений не сохраняет возрастание.
challenge icon

Дополнительный вопрос

Можешь вернуть самую длинную возрастающую подпоследовательность вместе с её длиной и при этом уложиться во время O(n log n)?

Сбросить код
def lengthOfLIS(nums):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

4