文章目录
题目描述:
解法:动态规划
爬楼梯规则:每次只能爬 1 或 2 个台阶,也就是说, 爬到第
i
阶是由第i - 1
和i - 2
组成也可以通过推导找出规律:
第1阶: 1 共 1 种
第2阶: 1 + 1, 2, 共2种
第3阶: 1 + 1 + 1, 1 + 2, 2 + 1, 共3种
。。。。。。
可以发现: 第 i 阶 = 第 i - 1 阶 + 第 i - 2 阶
所以 我们只需知道 i = 1,和 i = 2时的值,就可以求出后面所有的。
代码:
class Solution {
public int climbStairs(int n) {
/*
dp[i] 表示到达第i阶总共方法
dp[i] 可由 dp[i - 1]和dp[i - 2]推导而来
dp[0] = 1, d[1] = 1, d[2] = 2;
*/
if(n < 2) return 1;
int[] dp = new int[n + 1];
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n; i++){
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}