当前位置: 首页 > article >正文

LeetCode:300.最长递增子序列

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:300.最长递增子序列
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例 1:
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
示例 2:
输入:nums = [0,1,0,3,2,3]
输出:4
示例 3:
输入:nums = [7,7,7,7,7,7,7]
输出:1

  • 动态规划解决子序列问题
  • dp[i]表示子序列是以nums[i]为结尾的最长递增子序列的长度
  • 初始化:dp[i]都初始化为1,因为nums[i]为结尾的最长递增子序列至少可以是自己本身
  • 递推公式:dp[i] = Math.max(dp[i], dp[j] + 1)
	public int lengthOfLIS(int[] nums) {
        int len = nums.length;
        if (len == 1)
            return 1;
        int[] dp = new int[len];
        // 注意这里必须都要初始化为1!
        Arrays.fill(dp, 1);
        int result = 0;
        for (int i = 1; i < len; i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j])
                    dp[i] = Math.max(dp[i], dp[j] + 1);
            }
            result = Math.max(result, dp[i]);
        }
        return result;
    }

http://www.kler.cn/a/530144.html

相关文章:

  • 【Elasticsearch】_all 查询
  • Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器(最终版)
  • FPGA 使用 CLOCK_DEDICATED_ROUTE 约束
  • springCload快速入门
  • python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配
  • conda配置channel
  • 【Rust自学】19.3. 高级函数和闭包
  • 【TCP协议】流量控制 滑动窗口 拥塞控制
  • 第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
  • Spring应用场景 特性
  • 【C语言】自定义类型讲解
  • mysql字段名批量大小写转换
  • HarmonyOS NEXT:保存应用数据
  • 消息队列应用示例MessageQueues-STM32CubeMX-FreeRTOS《嵌入式系统设计》P343-P347
  • vector容器(详解)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.3 结构化索引:记录数组与字段访问
  • ExternalName Service 针对的是k8s集群外部有api服务的场景?
  • Haskell语言的多线程编程
  • [权限提升] Windows 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权
  • IM 即时通讯系统-43-简单的仿QQ聊天安卓APP
  • 2024 年 6 月大学英语四级考试真题(第 3 套)——纯享题目版
  • linux本地部署deepseek-R1模型
  • 内部知识库助力组织智力激发与信息共享实现业绩增长
  • 《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化
  • [Java]异常
  • GAMES101学习笔记(六):Geometry 几何(基本表示方法、曲线与曲面、网格处理)