Loading...

【动态规划】最长上升子序列(一)

阅读 ...

在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
        public int LIS(int[] arr) {
        if(arr==null||arr.length==0){
            return 0;
        }

        int[] dp = new int[arr.length];
        Arrays.fill(dp, 1);
        int ans = 1;

        for(int i=1;i<arr.length;i++){
            for(int j=0;j<i;j++){
                if(arr[i]>arr[j]){
                    dp[i]=Math.max(dp[j]+1, dp[i]);
                }
                
            }
            ans = Math.max(ans,dp[i]);
        }
        return ans;
    }

小贴士

状态转移:dp[i] = 前j个的最长长度+1 和 当前dp[i]的最大值

本文由 iamxurulin 原创发布,转载请保留原文链接。
最后更新于 2026-08-23 17:21:42
关于作者与文章

本文为 iamxurulin 原创技术文章。如对内容有疑问或建议,欢迎在评论区交流讨论。

Coder_Studio - 记录后端开发、算法与 AI 的成长之路