子序列经典题目
思路
思路写在代码里中,总结来说就是求了两次最大
- dp[i] 是从0到i-1中最长的子序列dp[j]+1
- 最终结果是0-i的dp中最长的那个dp
var lengthOfLIS = function(nums) {
let dp =new Array(nums.length).fill(1) //自身就是一个长度为1的序列
let result =1
for(let i=1;i<nums.length;i++){
for(let j=0;j<i;j++){
if(nums[i]>nums[j]){
// dp[i] 是从0到i-1中最长的子序列+1
dp[i] =Math.max(dp[i],dp[j]+1)
}
}
// 最终结果是0-i的dp中最长的那个dp
result =Math.max(result,dp[i])
}
return result
};