300.最长递增子序列

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了300.最长递增子序列相关的知识,希望对你有一定的参考价值。

300.最长递增子序列

思路

  • dp,表示i之前包括i的最长上升子序列;
  • Arrays.fill(dp, 1); 初始化所有值为1,因为单个子序列长度为 1;
  • 递增子序列的新加入元素必须比前面的元素都大
class Solution 
    public int lengthOfLIS(int[] nums) 
        int size = nums.length;
        if(size < 2) return size;
        int[] dp = new int[size];
        // for(int i = 0;i < size;i++)
        //     dp[i] = 1;
        // 
        Arrays.fill(dp, 1);
        int res = 0;
        for(int i = 1;i < size;i++)
            for(int j = 0;j < i;j++)
                // 递增序列,只有大于前面所有元素才能加入。
                if(nums[i] > nums[j])
                    dp[i] = Math.max(dp[i],dp[j] + 1);
                
                if(res < dp[i]) res = dp[i];
            
        
        return res;
    

以上是关于300.最长递增子序列的主要内容,如果未能解决你的问题,请参考以下文章

leetcode300. 最长递增子序列

300.最长递增子序列

LeetCode 300. 最长递增子序列

300.最长递增子序列

dp的二分优化NO300 最长递增子序列

代码随想录算法训练营第五十二天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组