题目:
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
解题思路:
这道题比较简单,只需要遍历一遍即可:
- 首先从头开始,比较相邻两位的大小:如果升序,继续比较,同时计数长度lengent(初始为1)加一
- 如果出现相邻两位不是升序(该位<=上一位),则将长度lengent=1,继续向后比较,计数
- 取lengent计数的最大值,即最长升序子序列长度
程序
class Solution:
def findLengthOfLCIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
lengent, maxlengent = 1 ,1
if len(nums) < 2:
return (1 if len(nums) == 1 else 0)
for i in range(1, len(nums)):
if nums[i] > nums[i-1]:
lengent += 1
else:
lengent = 1
maxlengent = max(maxlengent, lengent)
return maxlengent