/** * @param {number[]} nums * @return {number} */ const lengthOfLIS = function (nums) { }; /* 设dp[i]为以nums[i]结尾的递增子序列的最长长度,那么dp[i],nums[i]可以接在nums[0-i)中比它小的元素 组成子序列,求那个结果最长的就是dp[i],即dp[i] = Max(nums[0-i)) +1 */ function f1(nums) { const n = nums.length; const dp = Array(n).fill(1); dp[0] = 1; for (let i = 1; i < n; i++) { for (let j = 0; j < i; j++) { if (nums[j] < nums[i]) { // 更新dp[i]为最长子序列 dp[i] = Math.max(dp[j] + 1, dp[i]); } } } console.log(dp); return dp[n - 1]; } f1([1, 3, 6, 7, 9, 4, 10, 5, 6]);