https://leetcode.com/problems/longest-continuous-increasing-subsequence | Easy |
---|
Дан массив целых чисел nums
. Найдите длину самой длинной непрерывной возрастающей подпоследовательности (LCIS). Подпоследовательность должна состоять из последовательных элементов массива и быть строго возрастающей.
Input:
nums = [1, 3, 5, 4, 7]Output:
3Explanation:
Самая длинная возрастающая подпоследовательность — [1, 3, 5].
Input:
nums = [2, 2, 2, 2, 2]Output:
2Explanation:
Все элементы равны, самая длинная возрастающая подпоследовательность длиной 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), так как используется фиксированное количество переменных.