leetcode hot100 300. 最长递增子序列 medium 动态规划


时间复杂度:O(n²)

空间复杂度:O(n)

dpi 表示 以 numsi 结尾的最长递增子序列长度

python 复制代码
class Solution:
    def lengthOfLIS(self, nums: List[int]) -> int:

        # 动态规划:时间复杂度:O(n²), 空间复杂度:O(n)

        # dp[i] 表示 以 nums[i] 结尾的最长递增子序列长度
        # 对于每个 i,遍历 j = 0..i-1:
        #     如果 nums[i] > nums[j] → 可以接在 nums[j] 后面
        #     更新 dp[i] = max(dp[i], dp[j]+1)

        n = len(nums)
        dp = [1] * n  # nums中每个位置的最长子序列长度,初始值为1: dp = [1,1,1,...]

        for i in range(n):
            # 遍历i前面的数字,更新i是否可以作为对应数字,对应最长子序列的下一个,可以:i位置的最长子数组长度+1
            for j in range(i):
                if nums[i] > nums[j]:
                    dp[i] = max(dp[i], dp[j]+1)

        return max(dp)
相关推荐
闪电悠米7 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
过期动态10 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
Adios79419 小时前
设置交集大小至少为2
数据结构·算法·leetcode
程序猿乐锅1 天前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
hold?fish:palm1 天前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle1 天前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木1 天前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
啦啦啦啦啦zzzz1 天前
算法:回溯算法
c++·算法·leetcode
小肝一下1 天前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
tachibana21 天前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode