最长递增子序列
public int lengthOfLIS(int[] nums) {
int[]dp=new int[nums.length];
Arrays.fill(dp,1);
int res=1;
for(int i=1;i<nums.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(dp[i],res);
}
return res;
}
最长连续递增子序列
public int findLengthOfLCIS(int[] nums) {
int cover=1;
int res=1;
for(int i=1;i<nums.length;i++){
if(nums[i]>nums[i-1])cover++;
else {
res=Math.max(res,cover);
cover=1;
}
}
res=Math.max(res,cover);
return res;
}
最长重复子数组
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+1;i++){
for (int j = 1; j < nums2.length + 1; 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;
}