最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。

示例:

输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。

 

var lengthOfLIS = function(nums) {

   if(!nums.length) return 0

   let dp = []
   dp[0]=1  // dp[i]是指从0开始到以i为结尾的最长上升子序列长度

   for(let i =1;i<nums.length;i++){
       dp[i]=1
       for(let j = 0;j<i;j++){ // 从0到i开始遍历
           if(nums[j]<nums[i]){  // 如果num[j]< num[i] 那么dp[i]的值是dp[i]和dp[j]+1间的最大值
              dp[i] = Math.max(dp[i],dp[j]+1)
           }
       }
   }

   return Math.max(...dp)
};
posted @ 2020-07-05 17:33  hh9515  阅读(114)  评论(0)    收藏  举报