📜  门| GATE-CS-2006 |第 55 题(1)

📅  最后修改于: 2023-12-03 14:58:26.972000             🧑  作者: Mango

题目描述

给定一个整数数组 arr,找出该数组中的最长连续递增序列,返回该序列的长度。

示例

输入:

arr = [1,3,5,4,7]

输出:

3

解释: 最长连续递增序列是 [1,3,5], 长度为 3。

解法
思路

依次遍历数组,记录当前连续递增序列的起点和长度,如果遇到非递增数,则更新最长连续递增序列的长度,并重新记录连续递增序列起点和长度。

代码
class Solution:
    def findLengthOfLCIS(self, nums: List[int]) -> int:
        if not nums:
            return 0
        max_len = 1
        curr_start = 0
        curr_len = 1
        for i in range(1, len(nums)):
            if nums[i] > nums[i-1]:
                curr_len += 1
            else:
                max_len = max(max_len, curr_len)
                curr_len = 1
                curr_start = i
        max_len = max(max_len, curr_len)
        return max_len
复杂度分析

时间复杂度:$O(n)$,需要遍历一次数组。

空间复杂度:$O(1)$,只需要记录当前链的起点和长度。