【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】
两种方法。
- 暴力解, 直接遍历,用tag去标记临时位;
- 滑窗,用下标来标记(其实跟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
网友评论