LeetCode 「简单」70.爬楼梯
题目描述
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例
输入:n = 2
输出:2
输入:n = 3
输出:3
解答
这是一个经典的动态规划问题。假设你现在站在第 n 个台阶上,你只有两种方式可以一次上来:
- 从第
n-1个台阶爬1个台阶上来 - 从第
n-2个台阶爬2个台阶上来
Code
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
const dp = [0, 1, 2].concat(new Array(Math.max(0, n - 2)).fill(0));
for (let i = 3; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
