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.最长递增子序列的主要内容,如果未能解决你的问题,请参考以下文章

力扣LeetCode-300. 最长递增子序列-题解

Leetcode 300. 最长递增子序列

leetcode300. 最长递增子序列

Leetocde300. 最长递增子序列(经典DP)

300.最长递增子序列

LeetCode 300. 最长递增子序列