最长递增子序列
题目
https://leetcode-cn.com/problems/longest-increasing-subsequence/description/
分析
- 判断是哪种题目
- 确定是动态规划
- 明确 dp 数组是啥意思
- 确定 dp 的递推公式
dp[i] 指的是:数组前 i 个元素中,最长递增序列为多少?
dp[i] 的递推公式为:(nums[i] > nums[j]) && dp[i] = Math.max(dp[i], dp[j] + 1)
题解
const lengthOfLIS = function(nums) {
const len = nums.length
// 1. fill的为 1
const dp = Array(len).fill(1)
// 2. 对nums中每个进行遍历
for(let i = 0; i < len; i++) {
// 3. 对当前变得的 i 之前的元素进行遍历
for(let j = 0; j < i; j++) {
// 4. 对nums[i] 和 i 之前的 nums[j] 进行大小比较
if(nums[i] > nums[j]) {
// 5. 取较大的那一个
dp[i] = Math.max(dp[i], dp[j] + 1)
}
// (nums[i] > nums[j]) && (dp[i] = Math.max(dp[i], dp[j] + 1))
}
}
}