📅  最后修改于: 2023-12-03 14:49:25.230000             🧑  作者: Mango
对于给定数组中恰好删除一个元素后的最长递增连续子数组的最大长度,我们可以采用动态规划的思想来解决。
首先定义一个长度为 n
的数组 dp
,其中 dp[i]
表示以第 i
个元素结尾的最长递增连续子数组的长度。则有以下状态转移方程:
if nums[i] > nums[i-1]:
dp[i] = dp[i-1] + 1
else:
dp[i] = 1
这里需要注意的是,在数组 nums
中删除一个元素后,可能会出现不连续的情况。因此,我们需要遍历删除每个元素后的所有情况,找到最长的递增连续子数组。
代码实现如下:
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
n = len(nums)
result = 0
for i in range(n):
dp = [1] * n
for j in range(i, n):
if j > i and nums[j] > nums[j-1]:
dp[j] = dp[j-1] + 1
result = max(result, dp[j])
return result
其中,result
变量保存当前最长的递增连续子数组的长度。