我正在解决以下 leetcode 问题:
<块引用>给定一个整数数组 nums,返回最长严格递增子序列的长度。
给出的解决方案是 O(N^2) 时间,但我有以下解决方案在当前状态下不起作用:
def lengthOfLIS(self, nums: List[int]) -> int:
dp = [-1 for i in range(len(nums))]
dp[0] = 1
for i in range(1, len(nums)):
if nums[i] > nums[i-1]:
if i >= 2:
if dp[i] > dp[i-2]:
dp[i] = max(dp[i-1], dp[i-2], 0) + 1
else:
dp[i] = dp[i-1] + 1
else:
dp[i] = dp[i-1] + 1
else:
dp[i] = 1
return max(dp)
我正在尝试获得 O(N) 解决方案(如果可能,但我不确定!)。我的逻辑如下选择 dp[i],方法是在需要时删除一个元素或以其他方式选择它。是否可以修复我的方法,还是应该将其全部归类?