【leetcode 简单】第十八题 爬楼梯金沙官网线上

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

注意:给定 n 是一个正整数。

/*
    这道题目的思路是动态规划
    上n个台阶有多少中可能?
    f(n)=f(n-1)+f(n-2)

    那么很显然,到达最后一个台阶的方法数目等于前一个台阶的方法数目加上前两个台阶的方法数目,
    到这里我们发现这是一个很典型的斐波那契数列。

*/
class Solution {
public:
    /**
     * @param n: An integer
     * @return: An integer
     */
    int climbStairs(int n) {
        // write your code here
        int  *res=new int[n];
        res[0]=1;
        res[1]=1;
        res[2]=2;

        for(int i=3;i<=n;i++){
            res[i]=res[i-1]+res[i-2];
        }
        return res[n];
    }
};

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶

本文由金沙官网线上发布于编程,转载请注明出处:【leetcode 简单】第十八题 爬楼梯金沙官网线上

您可能还会对下面的文章感兴趣: