674. 最长连续递增序列

2020-06-28  本文已影响0人  Chiduru

【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
上一篇下一篇

猜你喜欢

热点阅读