Skip to content

Latest commit

 

History

History
74 lines (65 loc) · 1.66 KB

674.md

File metadata and controls

74 lines (65 loc) · 1.66 KB
  1. Longest Continuous Increasing Subsequence
Given an unsorted array of integers, find the length of longest continuous increasing 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.

my thoughts:

1. Looks like a two pointer problem

my solution:

**********48ms
class Solution(object):
    def findLengthOfLCIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l = 1
        r = 1
        mlen = 0
        if len(nums)==0:
            return 0
        if len(nums)==1:
            return 1
        while r<len(nums):
            if nums[r]>nums[r-1]:
                l = l+1
            else:
                mlen = max(l, mlen)
                l = 1
            r = r+1
        return max(mlen, l)

my comments:

from other ppl's solution:

1. more concise coding, efficiently combining edge cases, 32 ms:
	
class Solution(object):
    def findLengthOfLCIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        res = 1
        dp = 1
        for i in xrange(1,len(nums)):
            if nums[i] > nums[i-1]:
                dp += 1
            else:
                res = max(res, dp)
                dp = 1
        return max(res, dp)