爬楼梯
TIP
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路
dp[i - 1]
,上i-1
层楼梯,有dp[i - 1]
种方法,那么再一步跳一个台阶不就是dp[i]
了么。dp[i - 2]
,上i-2
层楼梯,有dp[i - 2]
种方法,那么再一步跳两个台阶不就是dp[i]
了么。
那么dp[i]
就是 dp[i - 1]
与dp[i - 2]
之和!
动规五部曲
- 确定dp数组以及下标的含义:
i
表示爬的总台阶数,dp[i]
表示爬到i
阶台阶一共有几种方法 - 确定递推公式:
dp[i] = dp[i-1]+dp[i-2]
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
js
var climbStairs = function(n) {
let dp = []
dp[1] = 1
dp[2] = 2
for(let i=3;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2]
}
return dp[n]
};