674_Longest Continuous Increasing Subsequence

Given an unsorted array of integers, find the length of longestcontinuousincreasing subsequence (subarray).

Example 1:

Input:
 [1,3,5,4,7]

Output:
 3

Explanation:
 The longest continuous increasing subsequence is [1,3,5], its length is 3. 
Even though [1,3,5,7] is also an increasing subsequence, it's not a continuous one where 5 and 7 are separated by 4.

Example 2:

Input:
 [2,2,2,2,2]

Output:
 1

Explanation:
 The longest continuous increasing subsequence is [2], its length is 1.

Note:Length of the array will not exceed 10,000.

Solution

我们可以使⽤⼀个计数器 curLength,如果遇到⼤的数字,计数器⾃增1 ;如果是⼀个⼩的数字,则计数器重置为1 。同时需要迭代目前为止的最大长度 maxLength.

Time O(n) Space O(1)

class Solution(object):
    def findLengthOfLCIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0:
            return 0
        curLength, maxLength = 1, 1
        for i in range(1, len(nums)):
            cur = nums[i]
            if cur > nums[i-1]:
                curLength += 1
                maxLength = max(maxLength, curLength)
            else:
                curLength = 1
        return maxLength

Last updated