美文网首页力扣解题报告
解题报告 - 300. 最长递增子序列

解题报告 - 300. 最长递增子序列

作者: 大涛先生 | 来源:发表于2022-10-08 22:38 被阅读0次

    LeetCode 300. 最长递增子序列

    @TOC

    题目描述

     给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

    子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

    示例:

    输入:nums = [10,9,2,5,3,7,101,18]
    输出:4
    解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
    

    提示:

    1 <= nums.length <= 2500
    -104 <= nums[i] <= 104
    

    一、解题关键词

    递增
    子序列
    顺序不变
    

    二、解题报告

    1.思路分析

    1. 动态规划经典题目,以当前元素为起点,下一个元素 选与不选的问题
    2. 声明动态方程
    3. 初始化
    4. 返回值默认值
    5. 一个循环便利所有元素
    6. 二个循环便利所有满足条件子序列
    7. 根据二层循环进行状态转移
    8. 找到最优解

    2.时间复杂度

    3.代码示例

    class Solution {
        public int lengthOfLIS(int[] nums) {
            int len = nums.length;
            int [] dp = new int[len];
    
            Arrays.fill(dp,1);
            int maxLen = 0;
    
            for(int i = 0; i < len; i++){
                for(int j = 0; j < i; j++){
                    if(nums[i] > nums[j]){
                        dp[i] = Math.max(dp[j] + 1, dp[i]);
                    }
                }
                maxLen = Math.max(maxLen,dp[i]);
            }
    
        return maxLen;
        }
    }
    

    4.知识点

    动态规划解题模板
    1、声明动态方程
    2、动态方程赋值
    3、循环
    4、状态转移
    5、找到最优秀解
    

    相关文章

      网友评论

        本文标题:解题报告 - 300. 最长递增子序列

        本文链接:https://www.haomeiwen.com/subject/lonwartx.html