Open any86 opened 4 years ago
function lengthOfLIS (nums) { const { length } = nums; const dp = new Array(length); dp.fill(1); for (let i = 1; i < length; i++) { for (let j = 0; j < i; j++) { if (nums[j] < nums[i]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } } return dp; }
参考 https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/zui-chang-shang-sheng-zi-xu-lie-dong-tai-gui-hua-t/
思路
如果当前数字大于前一个那么dp[i]等于dp[j]+1, 但是如果dp[j]+1还没有dp[i]大, 说明dp[j]不在连续的递增子序列中, 所以dp[i]的不做修改(依旧等于dp[i]);