class Solution {
public int lengthOfLIS(int[] nums) {
int[] dp = new int[nums.length];
Arrays.fill(dp,1);
int res = 1;
for(int i=0;i<nums.length;i++){
for(int j=0;j<i;j++){
if(nums[j]<nums[i]){
dp[i] = Math.max(dp[j]+1,dp[i]);
}
}
res = Math.max(res,dp[i]);
}
return res;
}
}
// dp[i] 的意义是,以第i个数字结尾的最长子序列长度
题解:
这道题主要是要确定好dp[i]的含义,它的含义是,以第i个数字结尾的最长子序列长度,必须是以这个数字结尾,所以最后答案是,dp数组里最大的元素。
本文介绍了如何使用动态规划方法解决最长递增子序列问题,通过Java代码展示了如何计算以每个数字结尾的最长子序列长度,并指出dp[i]表示以第i个数字结尾的最长子序列长度,最终返回dp数组中的最大值作为答案。
605

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



