最长递增子序列
采用动态规划解题
递推公式 dp[i]=max(dp[i],dp[j]+1) j<i
/**
* 最长上升子序列
* @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;
}
本文介绍了如何使用动态规划解决最长递增子序列问题,给出了Java代码示例,通过计算nums数组中每个元素能构成的最长递增子序列长度来找到整个序列的最大长度。
1314

被折叠的 条评论
为什么被折叠?



