📅  最后修改于: 2023-12-03 15:12:20.678000             🧑  作者: Mango
给定一个整数数组,找出其中连续子数组的最长长度,其元素按顺序递增。
给定 [1,3,5,4,7],那么最长连续子数组的长度为3,即[1,3,5]。
这个问题可以使用动态规划来解决。我们可以定义一个数组 dp,其中 dp[i] 表示以元素 i 结尾的连续子数组的最长长度。对于每个元素 i,如果它大于前一个元素 nums[i-1],那么 dp[i] = dp[i-1] + 1。否则 dp[i] = 1。
我们可以通过遍历数组并更新 dp 数组来解决这个问题。最后,我们只需要返回 dp 数组中的最大值即可。
def findLengthOfLCIS(nums: List[int]) -> int:
if not nums:
return 0
n = len(nums)
dp = [1] * n
for i in range(1, n):
if nums[i] > nums[i-1]:
dp[i] = dp[i-1] + 1
return max(dp)
时间复杂度:O(n),其中 n 是数组的长度。我们只需要遍历一次数组即可。
空间复杂度:O(n),我们需要一个 dp 数组来存储每个元素结尾的连续子数组的最长长度。