Day34 | 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组、1143. 最长公共子序列
300. 最长递增子序列
题目链接:300. 最长递增子序列 - 力扣(LeetCode)
题目难度:中等
代码:
class Solution {
public int lengthOfLIS(int[] nums) {
int[] dp=new int[nums.length];
int res=1;
Arrays.fill(dp,1);
for(int i=0;i<dp.length;i++){
for(int j=0;j<i;j++){
if(nums[i]>nums[j])
dp[i]=Math.max(dp[i],dp[j]+1);
}
res=Math.max(res,dp[i]);
}
return res;
}
}
674. 最长连续递增序列
题目链接:674. 最长连续递增序列 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public int findLengthOfLCIS(int[] nums) {
int dp[]=new int[nums.length];
Arrays.fill(dp,1);
int res=1;
for(int i=1;i<nums.length;i++){
if(nums[i]>nums[i-1])
dp[i]=dp[i-1]+1;
res=Math.max(res,dp[i]);
}
return res;
}
}
718. 最长重复子数组
题目链接:718. 最长重复子数组 - 力扣(LeetCode)
题目难度:中等
代码:
class Solution {
public int findLength(int[] nums1, int[] nums2) {
int dp[][]=new int[nums1.length+1][nums2.length+1];
int res=0;
for(int i=1;i<=nums1.length;i++){
for(int j=1;j<=nums2.length;j++){
if(nums1[i-1]==nums2[j-1])
dp[i][j]=dp[i-1][j-1]+1;
res=Math.max(res,dp[i][j]);
}
}
return res;
}
}
1143. 最长公共子序列
题目链接:1143. 最长公共子序列 - 力扣(LeetCode)
题目难度:中等
代码:
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int dp[][]=new int[text1.length()+1][text2.length()+1];
for(int i=1;i<=text1.length();i++){
char char1=text1.charAt(i-1);
for(int j=1;j<=text2.length();j++){
char char2=text2.charAt(j-1);
if(char1==char2)
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[text1.length()][text2.length()];
}
}