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];

    }

}

  

 

posted @ 2021-07-15 23:11  Leexinyang  阅读(43)  评论(0)    收藏  举报