题解
1. 思路:动态规划
-
状态转移方程:dp[n] = dp[n-1] + dp[n-2]
从终点开始考虑。
- 青蛙最后一次跳1步的情况:情况数 = 有 n-1 阶台阶的情况
- 青蛙最后一次跳2步的情况:情况数 = 有 n-2 阶台阶的情况
-
dp[0] = 1, dp[1] = 1
2. 时间复杂度:O(n)
3. 空间复杂度:O(1)
4. 实现
/**
* @param {number} n
* @return {number}
*/
var numWays = function(n) {
// 预处理(无)
// 动态规划
let dp0 = 1, dp1 = 1;
if(n <= 1) return 1;
while(n > 1){
let temp = dp0;
dp0 = dp1;
dp1 = (temp + dp0) % (1e9+7); // 结果取模 1e9+7
n--;
}
return dp1;
};