欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dp4-力扣-java-最长递增子序列+ 最长公共子序列

程序员文章站 2022-03-24 20:48:15
...

dp4-力扣-java-最长递增子序列+ 最长公共子序列

class Solution {
    public int lengthOfLIS(int[] nums) {
        if(nums.length<2) return nums.length;
        int n=nums.length;
        int res=0;
        int []dp=new int[n];//dp[i]表示以nums[i]结尾的「上升子序列」的长度
        Arrays.fill(dp,1);
        for(int i=0;i<n;i++){
            for(int j=0;j<i;j++){
                if(nums[j]<nums[i]){
                    dp[i]=Math.max(dp[i],dp[j]+1);
                }
            }
            res=Math.max(res,dp[i]);
        }
        return res;
    }
}
//https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/dong-tai-gui-hua-er-fen-cha-zhao-tan-xin-suan-fa-p/

 dp4-力扣-java-最长递增子序列+ 最长公共子序列

class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
        int m=text1.length(),n=text2.length();
        //dp[i][j] 表示text1[0~i-1]和text2[0~j-1]的最长公共子序列长度
        int [][]dp=new int[m+1][n+1];
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(text1.charAt(i-1)==text2.charAt(j-1)){
                    dp[i][j]=dp[i-1][j-1]+1;
                }
                else{
                    dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
                }
            }
        }
        return dp[m][n];
    }
}

 

相关标签: 动态规划