没看答案。
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
'''
state: dp[i]表示以元素nums[i]为结尾的数组的连续递增子序列长度
basecase: dp数组初始化每个元素都为1
transfer: dp[i] = dp[i-1]+1 如果nums[i-1] < nums[i]
result: max(dp)
'''
n = len(nums)
dp = [1] * n
# dp[0] = 1
for i in range(1, n):
if nums[i-1] < nums[i]:
dp[i] = dp[i-1] + 1
return max(dp)
用变量代替dp数组,以降低空间复杂度。
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
n = len(nums)
res = 1
tmp = 1 # 记录遍历数组期间的连续递增子序列长度,不断更新res,遇到中断时重置为1
for i in range(1, n):
if nums[i-1] < nums[i]:
tmp += 1
else:
tmp = 1
res = max(res, tmp)
return res
版权声明:本文为VaccyZhu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。