LeetCode_Hot100_Demo070_爬楼梯(easy)
开启了许久未动的博客园,从今天开始,暑假期间尽量把自己做的题放在这里吧
给自己的成长留个念想,如果后面真成dalao了,也能给自己多一个吹牛的资本
好久没做题,连最基础的动态规划都不会了,真是垃圾啊我,,,,,
本题的题目描述是:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
刚一开始本来想定义一个方法,每次递归调用从顶层到底层减一或减二,后来自己觉得不好实现,还是翻看了题解,恍然大悟,这就是斐波那契数列的变式
到达n层的方法种数有:(1)到达前一层,前进一层,(2)到达前二层,前进二层 两种情况
也就是说,状态转移方程可以写成 f(n) = f(n - 1) + f(n - 2)
这样分析结束后,直截了当的就出来了斐波那契数列
public class Solution {
public int climbStairs(int n) {
int dp[] = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}

浙公网安备 33010602011771号