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

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

目录

  • 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.kler.cn/a/300846.html

相关文章:

  • 【2024年华为OD机试】 (C卷,100分)- 小明找位置(Java JS PythonC/C++)
  • 【全面解析】深入解析 TCP/IP 协议:网络通信的基石
  • 使用 Docker 部署 Java 项目(通俗易懂)
  • nginx 配置域名前缀访问 react 项目
  • C 语言标准库函数——strtol函数
  • 浅谈云计算15 | 存储可靠性技术(RAID)
  • 【Python】selenium实现滚动条滑动效果
  • 市面上有哪些高效财税自动化软件
  • CCF推荐B类会议和期刊总结:(计算机网络领域)
  • 在人工智能与机器学习领域的深度探索:技术价值的全面剖析与产品经理的角色深化
  • 黑马点评24—原理—Redis数据结构
  • Github 2024-09-06 Java开源项目日报Top10
  • 口语笔记——现在完成时
  • Tomcat服务器安装SSL证书教程
  • sqli-labs靶场自动化利用工具——第6关
  • JavaWeb【day09】--(Mybatis)
  • 【程序员必备】如何通过AI提升编程效率,轻松应对复杂代码
  • flink增量检查点降低状态依赖实现的详细步骤
  • 入职思维转变与成长之路(讲座笔记)
  • LRU go cache的实现
  • 哈希表如何避免冲突
  • Find My外卖箱|苹果Find My技术与外卖箱结合,智能防丢,全球定位
  • 二十三种模式之原型模式(类比制作陶器更好理解一些)
  • RK3588高性能处理器助力测量机器人精准作业
  • 【数据结构】堆——堆排序与海量TopK问题
  • Sqlserver常用sql