300.最长递增子序列
- 学习文章链接:
- 思路:见代码
- 代码:
class Solution {
public int lengthOfLIS(int[] nums) {
int len = nums.length;
if (len <= 1) return nums.length;
int[] dp = new int[len];
Arrays.fill(dp, 1);
int res = 0;
for (int i = 1; i < len; i++) {
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) dp[i] = Math.max(dp[i], dp[j] + 1);
}
if (dp[i] > res) res = dp[i];
}
return res;
}
}
674. 最长连续递增序列
- 学习文章链接:
- 思路:见代码
- 代码:
class Solution {
public int findLengthOfLCIS(int[] nums) {
int len = nums.length;
int result = 1;
if(len == 0) return 0;
int[] dp = new int[len];
Arrays.fill(dp, 1);
dp[0] = 1;
for(int i = 1; i < len; i++){
if(nums[i] > nums[i - 1]){
dp[i] = dp[i - 1] + 1;
}
if(dp[i] > result) result = dp[i];
}
return result;
}
}
- 学习文章链接:
- 思路:
- 代码:
class Solution {
public int findLength(int[] nums1, int[] nums2) {
if (nums1.length == 0 || nums2.length == 0) return 0;
int m = nums1.length;
int n = nums2.length;
int[][] dp = new int[m + 1][n + 1];
int res = 0;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (nums1[i - 1] == nums2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
if (dp[i][j] > res) res = dp[i][j];
}
}
return res;
}
}