如何解决LeetCode 最长递增子序列
我正在解决以下 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],方法是在需要时删除一个元素或以其他方式选择它。是否可以修复我的方法,还是应该将其全部归类?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。