leetcode674-- Longest Continuous Increasing Subsequence (这个题感觉也很巧妙)

leetcode674-- Longest Continuous Increasing Subsequence (这个题感觉也很巧妙)

题目

这个和之前的不太一样,这次要求的是连接的递增的子数组。如果中间有间断就不算,这样其实把总是弄容易了,有间断意味着数不再变大了,这时候就重新计数就可以了,然后把之前的结果存一下,或者更新一下都可以

解法


class Solution(object):
    def findLengthOfLCIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        ## 这个比之前的那个简单了许多,我感觉这个可以看成是双指针办法的那一类,但是可以用一个变量就可以弄了。
        
        ## 初始化一个很大的数var,然后 遍历
        ## 想法就是从第一个元素开始遍历,var见到较小的元素就重置为1,相当于是一个新的序列了,如果较大的话,长度就加1
        
        import sys
        var = sys.maxint  # 弄成list的首元素也行
        
        cnt = 0
        
        maxLength = 0
        
        for i in range(len(nums)):
            if nums[i]>var:  # 
                cnt += 1
            else:
                cnt = 1 
                
            maxLength = max(maxLength, cnt)
            var = nums[i]
        return maxLength

第二个解法更好理解

class Solution(object):
    def findLengthOfLCIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        if len(nums) == 0:
            return 0
        
        cur = nums[0]
        cnt = 1  # not zero
        maxLength = 1  # not zero
        
        for i in range(1, len(nums)):
            # compare nums[i] and cur
            
            if nums[i]>cur:
                cnt += 1
            else:
                ## reset
                cnt = 1
                
            maxLength = max(maxLength, cnt)
            
            # update cur
            cur = nums[i]
            
        return maxLength
        

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦