https://leetcode.com/problems/longest-continuous-increasing-subsequence Easy

Условие

Дан массив целых чисел nums. Найдите длину самой длинной непрерывной возрастающей подпоследовательности (LCIS). Подпоследовательность должна состоять из последовательных элементов массива и быть строго возрастающей.

Примеры

Input: nums = [1, 3, 5, 4, 7] Output: 3 Explanation: Самая длинная возрастающая подпоследовательность — [1, 3, 5].

Input: nums = [2, 2, 2, 2, 2] Output: 2 Explanation: Все элементы равны, самая длинная возрастающая подпоследовательность длиной 1.

Решение

fun findLengthOfLCIS(nums: IntArray): Int {
    if (nums.isEmpty()) return 0

    var maxLength = 1 // Длина самой длинной подпоследовательности
    var currentLength = 1 // Длина текущей возрастающей подпоследовательности

    for (i in 1 until nums.size) {
        if (nums[i] > nums[i - 1]) {
            currentLength++ // Увеличиваем длину текущей последовательности
            if (currentLength > maxLength) {
                maxLength = currentLength // Обновляем максимальную длину
            }
        } else {
            currentLength = 1 // Сбрасываем длину, так как последовательность прервалась
        }
    }

    return maxLength
}

Временная сложность

O(n), где n — длина массива.

Пространственная сложность

O(1), так как используется фиксированное количество переменных.