给定一个无序的整数数组,找到其中最长上升子序列的长度。
示例:
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
思路:直接看下面的图和代码:
class Solution {
public int lengthOfLIS(int[] nums) {
int[] dp = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
int max = 0;
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
if (dp[j] > max) {
max = dp[j];
}
}
}
dp[i] = Math.max(1, max + 1);
}
int maxLength = 0;
for (int i = 0; i < dp.length; i++) {
if (dp[i] > maxLength) {
maxLength = dp[i];
}
}
return maxLength;
}
}