674. 最长连续递增序列

【Description】
给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。

示例 1:

输入: [1,3,5,4,7]
输出: 3
解释: 最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。
示例 2:

输入: [2,2,2,2,2]
输出: 1
解释: 最长连续递增序列是 [2], 长度为1。

注意:数组长度不会超过10000。

【Idea】
两种方法。

  1. 暴力解, 直接遍历,用tag去标记临时位;
  2. 滑窗,用下标来标记(其实跟1半斤八两

复杂度很难看,硬性O(n)避不开,看了一些题解也都差不多,就没有再优化了

【Solution】

class Solution:
    def findLengthOfLCIS(self, nums: List[int]) -> int:
        length = len(nums)
        if length < 2:
            return length

        # res = 0
        # anchor = 0
        # tp_len = 1
        # for i in range(1, length):
        #     if nums[i] > nums[i-1]:
        #         tp_len += 1
        #     else:
        #         res = max(res, tp_len)
        #         tp_len = 1
        #     print(nums[i], tp_len, res)
        # return max(res, tp_len)

        res = 0
        tag = 0
        for i in range(1, length):
            if nums[i] <= nums[i-1]:
                tag = i
            res = max(res, i-tag+1)
            # print(nums[i], tag, res)
        return res
截屏2020-06-28 上午12.58.33.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容