【Hot100】LeetCode—300. 最长递增子序列

news2025/4/13 17:02:40

目录

  • 1- 思路
    • 题目识别
    • 动规五部曲
  • 2- 实现
    • 最长递增子序列——题解思路
  • 3- ACM 实现


  • 原题链接:300. 最长递增子序列

1- 思路

题目识别

  • 识别1 :给出一个数组输入 nums
  • 识别2:严格递增的子序列,子序列可以是不连续的

动规五部曲

思路:

  • 1- 定义 dp 数组
    • dp[i] 代表长度为 i 的数组的最长递增子序列的长度
  • 2- 递推公式
    • if(nums[j] > nums[i]) 则更新 dp[j] = Math.max(dp[i] + 1,dp[j])

2- 实现

最长递增子序列——题解思路

在这里插入图片描述

class Solution {
    public int lengthOfLIS(int[] nums) {
        int len = nums.length;
        int[] dp = new int[len+1];

        // 2.递推公式
        // if(nums[i] > nums[j]) dp[j] = dp[i] + +1;

        // 初始化
        Arrays.fill(dp,1);

        for(int i = 1 ; i <= len;i++){
            for(int j = 1 ; j < i ; j++){
                if(nums[i-1] > nums[j-1]){
                    dp[i] = Math.max(dp[j] + 1,dp[i]);
                }
            }
        }
        int res = 1;
        for(int i : dp){
            res = Math.max(i,res);
        }
        return res;
    }
}

3- ACM 实现

public class maxLenSub {

    public static int findMax(int[] nums){
        //1.定义 dp
        int len = nums.length;
        int[] dp = new int[len+1];

        // 2. 递推公式
        // if(nums[i] > nums[j])

        // 3.初始化
        Arrays.fill(dp,1);

        for(int i = 1 ; i <= len;i++){
            for(int j = 1 ; j < i ; j++){
                if(nums[i-1] > nums[j-1]){
                    dp[i] = Math.max(dp[i],dp[j]+1);
                }
            }
        }
        int res = 1 ;
        for(int r:dp){
            res = Math.max(res,r);
        }
        return res;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        input = input.replace("[","").replace("]","");
        String[] parts = input.split(",");
        int[] nums = new int[parts.length];
        for(int i = 0 ; i < nums.length;i++){
            nums[i] = Integer.parseInt(parts[i]);
        }
        System.out.println("结果是"+findMax(nums));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据处理与统计分析篇-day02-Linux进阶

day02-Linux进阶 补充昨日内容 Linux基础 文件编辑 命令模式 编辑模式 esc回到命令模式 正常编辑 底行(底线)模式 查看Linux命令帮助文档 # --help 可以查看命令的详细信息 命令名 --help ​ # 例如: ls --help ​ # man 可以查看命令的主要(简单)信息 man 命令名…

树莓派替代台式计算机?树莓派上七款最佳的轻量级操作系统!

​Raspberry Pi 是一款超级实惠的单板计算机&#xff08;SBC&#xff09;&#xff0c;可用于各种不同的项目。Raspberry Pi 的一些最流行用途包括将其变成媒体播放器或模拟机器。鉴于该系统的多功能性&#xff0c;有人想知道它是否可以替代台式计算机。好吧&#xff0c;它可以&…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关&#xff0c;每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

Postman做接口测试时一些实用的操作

Postman 之前是作为Chrome 的一个插件&#xff0c;现在要下载应用才能使用。 以下是postman 的界面&#xff1a; 各个功能区的使用如下&#xff1a; 快捷区&#xff1a; 快捷区提供常用的操作入口&#xff0c;包括运行收藏夹的一组测试数据&#xff0c;导入别人共享的收藏夹测…

论文解读:利用大模型进行基于上下文的OCR校正

论文地址&#xff1a;https://arxiv.org/pdf/2408.17428 背景概述 研究问题&#xff1a;这篇文章要解决的问题是如何利用预训练的语言模型&#xff08;LMs&#xff09;来改进光学字符识别&#xff08;OCR&#xff09;的质量&#xff0c;特别是针对报纸和期刊等复杂布局的文档。…

GDPU Java Web 天码行空1

目的&#xff1a; 1、 掌握Java Web编程环境的配置 2、 创建简单的Web工程&#xff0c;并了解Web工程下各目录的作用 3、 掌握部署、运行Web工程的流程 实验过程&#xff1a; 一、完成如下要求。 安装并设置JDK 1.8、Tomcat 9.0&#xff08;tomcat和jdk版本匹配请看下图&am…

初创企业的信息架构蓝图:从构想到实施的全面攻略

初创企业的信息架构蓝图&#xff1a;从构想到实施的全面攻略 在数字化转型的大趋势下&#xff0c;初创企业面临着巨大的机遇和挑战。如何快速搭建稳健的信息架构蓝图&#xff0c;以支持业务增长、提高运营效率并确保数据安全&#xff0c;成为初创企业成功的关键因素。《信息架…

动手学习RAG:迟交互模型colbert微调实践 bge-m3

动手学习RAG: 向量模型动手学习RAG: BGE向量模型微调实践]()动手学习RAG: BCEmbedding 向量模型 微调实践]()BCE ranking 微调实践]()GTE向量与排序模型 微调实践]()模型微调中的模型序列长度]()相似度与温度系数 本文我们来进行ColBERT模型的实践&#xff0c;按惯例&#xff…

5G毫米波阵列天线仿真——CDF计算(手动AC远场)

之前写过两个关于阵列天线获取CDF的方法&#xff0c;一个通过Realized Gain&#xff0c;一个通过Power Flow&#xff0c; 三个案例中都是3D中直接波束扫描&#xff0c;并没有展示场路结合的情况。这期我们用Power Flow的方法&#xff0c;手动合并AC任务的波束计算CDF。 还是用…

[Power save]wifi省电模式

管理帧 beacon DTIM AP的beacon中携带TIM&#xff08;Traffic indication Map&#xff09;字段&#xff0c;里面包含DTIM Count&#xff0c;DTIM Period&#xff0c;Bitmap Control和Part Virt Bmap字段 DTIM Period&#xff1a;AP缓存数据的能力&#xff0c;处于PS状态下的…

B2B销售:成功所需的工具

谈到B2B销售&#xff0c;拥有合适的工具可以带来巨大的差异。合适的工具可以提高效率和效能&#xff0c;简化操作&#xff0c;节省成本并提供竞争优势。 探索优化B2B销售栈的重要组成部分时&#xff0c;我们可以发现&#xff0c;正确的技术能让您的业务在未来取得成功。 电子…

前端 + 接口请求实现 vue 动态路由

前端 接口请求实现 vue 动态路由 在 Vue 应用中&#xff0c;通过前端结合后端接口请求来实现动态路由是一种常见且有效的权限控制方案。这种方法允许前端根据用户的角色和权限&#xff0c;动态生成和加载路由&#xff0c;而不是在应用启动时就固定所有的路由配置。 实现原理…

C语言-综合案例:通讯录

传送门&#xff1a;C语言-第九章-加餐&#xff1a;文件位置指示器与二进制读写 目录 第一节&#xff1a;思路整理 第二节&#xff1a;代码编写 2-1.通讯录初始化 2-2.功能选择 2-3.增加 和 扩容 2-4.查看 2-5.查找 2-6.删除 2-7.修改 2-8.退出 第三节&#xff1a;测试 下期…

基于SpringBoot+Vue的超市外卖管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

OceanBase 企业版OMS 4.2.3的使用

OceanBase 企业版OMS 4.2.3的使用 一、界面说明 1.1 概览 1.2 数据迁移 1.3 数据同步 1.4 数据源管理 1.5 运维监控 1.6 系统管理 二、功能说明 注意&#xff1a; 在数据迁移与数据同步的功能中&#xff0c;如果涉及到增量操作&#xff1a; 1.需要使用sys租户的用…

828华为云征文 | 华为云Flexusx与Docker技术融合,打造个性化WizNote服务

前言 华为云Flexusx携手Docker技术&#xff0c;创新融合打造高效个性化WizNote服务。Flexusx的柔性算力与Docker的容器化优势相结合&#xff0c;实现资源灵活配置与性能优化&#xff0c;助力企业轻松构建稳定、高效的云端笔记平台。828华为云企业上云节特惠来袭&#xff0c;Fle…

【无标题】Efinity 0基础进行流水灯项目撰写(FPGA)

文章目录 前言一、定义概念 缩写1. 二、性质1.2. 三、使用步骤编译常见错误1. 没加分号2. end 写多了 编译成功的标志总结参考文献 前言 数电课设 使用 FPGAIDE 使用 Efinity 一、定义概念 缩写 1. 二、性质 1. 2. 三、使用步骤 python代码块matlab代码块c代码块编译…

你真的了解Canvas吗--解密二【ZRender篇】

书接上文你真的了解Canvas吗--解密一【ZRender篇】 目录 入口 挖掘 继承 _init step-1&#xff1a;取所有key值 ​​​​​​​ step-2&#xff1a;定义构造函数BezierCurveShape …

PMP--一模--解题--1-10

文章目录 14.敏捷--方法--替代敏捷方法--看板1、 [单选] 根据项目的特点&#xff0c;项目经理建议选择一种敏捷方法&#xff0c;该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法&#xff1f; …