理念
- 多阶段决策最优解模型
- 最优子结构
- 无后效性
-
解题
确定 dp 数组以及下标的含义
- 确定递推公式
- dp 数组如何初始化
- 确定遍历顺序
举例推导 dp 数组
var wiggleMaxLength = function(nums) {
const n = nums.length;
if (n < 2) {
return n;
}
let up = down = 1;
for (let i = 1; i < n; i++) {
if (nums[i] > nums[i - 1]) {
up = Math.max(up, down + 1);
} else if (nums[i] < nums[i - 1]) {
down = Math.max(up + 1, down);
}
}
return Math.max(up, down);
};