leetcode 300タイトル:増加した最も長いシーケンス

件名の説明:

アレイ整数所与の疾患、最長の長さは、立ち上がりシーケンスを発見しました。
例:

入力:[10,9,2,5,3,7,101,18]
出力:4
説明:最長シーケンスが増加する[2,3,7,101]、その長さは4です。

説明:

様々な組み合わせを使用すると、出力のみに対応した長さを必要とする、シーケンスを増加させることができます。
あなたのアルゴリズムの時間計算量はO(N2)でなければなりません。
高度:あなたはOにアルゴリズムの時間の複雑さを軽減(N Nログ)行うことができますか?

Pythonコード

class Solution:
    # 动态规划的思路:将 dp 数组定义为:以 nums[i] 结尾的最长上升子序列的长度
    # 那么题目要求的,就是这个 dp 数组中的最大者
    # 以数组  [10, 9, 2, 5, 3, 7, 101, 18] 为例:
    # dp 的值: 1  1  1  2  2  3  4    4
    def lengthOfLIS(self, nums: List[int]) -> int:
        size = len(nums)
        if size <= 1:
            return size
        dp = [1] * size
        for i in range(1, size):
            for j in range(i):
                if nums[i] > nums[j]:
                    dp[i] = max(dp[i], dp[j] + 1)
        return max(dp)
公開された33元の記事 ウォンの賞賛3 ビュー5532

おすすめ

転載: blog.csdn.net/weixin_42990464/article/details/104854631