最长上升子序列
采用动态规划算法
解题思路,递推公式
j<i
num[j]<num[i]
dp[i]=max(dp[i],dp[j]+1)
/**
* 最长上升子序列
* @param nums 【1,3,4,5,1,2,3】
* @return 4
*/
public static int lengthOfLis(int[] nums) {
int n = nums.length;
if (n == 0) {
return 0;
}
int dp[] = new int[n];
int max = 0;
for (int i = 0; i < n; i++) {
dp[i] = 1;
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
max = Math.max(dp[i], max);
}
return max;
}