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)
相关推荐
旖旎夜光2 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
文丑颜不良啊2 小时前
LeetCode1401~1420题目解析
java·leetcode
Nuanyt2 小时前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
文丑颜不良啊2 小时前
LeetCode1341~1360题目解析
java·leetcode
海绵宝宝转agent3 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
Pniubi4 小时前
力扣543二叉树的直径(深度优先搜索法(递归))
算法·leetcode·职场和发展
UIU11415 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
j7~21 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
Shaoshing1 天前
LeetCode100 42.接雨水
java·算法·leetcode
文丑颜不良啊1 天前
LeetCode1261~1280题目解析
java·leetcode