LeetCode 最长递增子序列

时间:2021-07-07 17:18:29

标签: algorithm subsequence

我正在解决以下 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],方法是在需要时删除一个元素或以其他方式选择它。是否可以修复我的方法,还是应该将其全部归类?

0 个答案:

没有答案
相关问题