本题是LCSI问题,可以使用两种方法来解决该问题。
如下是python版本的解决方法:
法一:#使用两个变量来记录最大值,res记录最终连续递增序列长度的最大值,count记录当前连续递增序列长度的最大值。
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
if not nums:
return 0
if len(nums)==1:
return 1
count =1
res =1
for i in range(1,len(nums)):
if nums[i]>nums[i-1]:
count =count+1
else:
count =1
res =max(res,count)
return res
法二:使用动态规划求解
解决求最值问题一般可以用动态规划来解决,
令dp[i]是以nums[i]结尾的连续递增序列长度。
则状态转移方程:如果:nums[i] > nums[i-1],则dp[i] = dp[i-1] + 1。否则:dp[i] =1
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
n = len(nums)
if n == 0:
return 0
dp = [0] * n
dp[0] = 1
for i in range(1, n):
if nums[i] > nums[i-1]:
dp[i] = dp[i-1] + 1
else:
dp[i] = 1
return max(dp)