题目

image.png

DP

最难的是找出类推规律吧。
也就是五步骤里的第一步:确定dp数组的含义!
这道题里:
爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。
那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。
所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。
从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。

  • 首先是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]之和!

  1. var climbStairs = function(n) {
  2. // 爬第一层有1种方法,爬第二层有两种方法,可以推出爬第三层的方法是 1层+2层
  3. let dp =[0,1,2]
  4. for(let i=3;i<=n;i++){
  5. dp[i] =dp[i-1]+dp[i-2]
  6. }
  7. return dp[n]
  8. };