300.最长递增子序列
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了300.最长递增子序列相关的知识,希望对你有一定的参考价值。
300.最长递增子序列
思路
- dp,表示i之前包括i的最长上升子序列;
- Arrays.fill(dp, 1); 初始化所有值为1,因为单个子序列长度为 1;
- 递增子序列的新加入元素必须比前面的元素都大
class Solution {
public int lengthOfLIS(int[] nums) {
int size = nums.length;
if(size < 2) return size;
int[] dp = new int[size];
// for(int i = 0;i < size;i++){
// dp[i] = 1;
// }
Arrays.fill(dp, 1);
int res = 0;
for(int i = 1;i < size;i++){
for(int j = 0;j < i;j++){
// 递增序列,只有大于前面所有元素才能加入。
if(nums[i] > nums[j]){
dp[i] = Math.max(dp[i],dp[j] + 1);
}
if(res < dp[i]) res = dp[i];
}
}
return res;
}
}
以上是关于300.最长递增子序列的主要内容,如果未能解决你的问题,请参考以下文章