dp4-力扣-java-最长递增子序列+ 最长公共子序列
程序员文章站
2022-03-24 20:48:15
...
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/
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];
}
}
下一篇: 最大子矩阵(小于等于某值)