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


时间复杂度:O(n²)

空间复杂度:O(n)

dp[i] 表示 以 nums[i] 结尾的最长递增子序列长度

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 小时前
45. 跳跃游戏 II
c++·leetcode·游戏·贪心算法
cpp_25012 小时前
P2871 [USACO07DEC] Charm Bracelet S
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
踩坑记录3 小时前
leetcode hot100 347. 前 K 个高频元素 medium 桶排序
leetcode
cpp_25013 小时前
P2722 [USACO3.1] 总分 Score Inflation
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
kronos.荒3 小时前
动态规划——最长递增子序列系列问题(python)
算法·动态规划·最长递增子序列系列问题
Rabitebla4 小时前
【数据结构】消失的数字+ 轮转数组:踩坑详解
c语言·数据结构·c++·算法·leetcode
菜菜的顾清寒4 小时前
力扣100(20)旋转图像
算法·leetcode·职场和发展
Navigator_Z4 小时前
LeetCode //C - 1025. Divisor Game
c语言·算法·leetcode
玛丽莲茼蒿4 小时前
Leetcode hot100 矩阵置零【中等】
算法·leetcode·矩阵