最长递增子序列

题目链接:

300. 最长递增子序列 - 力扣(LeetCode)

思路:

  1. 需要尤为注意的一点是 题目 所说的递增子序列,指的是 可以不连续的 子序列

  2. 我们采用 dp 算法,当前位置 dp[i] 的最优值(最大值),需要是遍历,i 位置前面的 其他元素,看是否 nums[i] 大于 nums[j] ,并拿到 j 位置的 最优值 dp[j] +1 作为 dp[i] 的值,这个值需要遍历前面的所有位置的最优解,不断迭代,拿到当前位置的最优解

代码:

javascript 复制代码
/**
 * @param {number[]} nums
 * @return {number}
 */
var lengthOfLIS = function (nums) {
    if (!nums.length) return 0
    if (nums.length <= 1) return 1;
    let res = 1, dp = new Array(nums.length + 10).fill(1);
    for (let i = 1; i < nums.length; i++) {
        for (let j = i - 1; j >= 0; j--) {
            if (nums[i] > nums[j]) {
                dp[i] = Math.max(dp[j] + 1, dp[i])
            }
        }
        res = Math.max(res, dp[i])
    }

    return res
};
相关推荐
swipe8 分钟前
为什么 RAG 一定离不开向量检索:从文档向量化到语义搜索的工程实现
前端·llm·agent
Sunshine for you22 分钟前
C++中的职责链模式实战
开发语言·c++·算法
OpenTiny社区35 分钟前
AI-Extension:让 AI 真的「看得到、动得了」你的浏览器
前端·ai编程·mcp
IT_陈寒38 分钟前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
qq_4160187242 分钟前
C++中的状态模式
开发语言·c++·算法
2401_8845632443 分钟前
模板代码生成工具
开发语言·c++·算法
2401_831920741 小时前
C++代码国际化支持
开发语言·c++·算法
m0_672703311 小时前
上机练习第51天
数据结构·c++·算法
ArturiaZ1 小时前
【day60】
算法·深度优先·图论
2401_851272991 小时前
自定义内存检测工具
开发语言·c++·算法