跳转至

10.2.青蛙跳台阶*

题目描述*

一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级台阶。求该青蛙跳上一个 n  级的台阶总共有多少种跳法。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1

提示*

0 <= n <= 100

代码*

n 级台阶可以由 n-1 阶一步或 n-2 阶两步走到,和斐波那契一样。

如果改成一次可以跳 1 ~ n 级,那么 f(n) = 2^(n - 1)

class Solution {
public:
    int numWays(int n) {
        if(n == 0) {
            return 1;
        }
        if(n <= 2) {
            return n;
        }
        int n1 = 1, n2 = 2;
        int res = 0;
        while(n-- >= 3){
            res = (n1 + n2)%1000000007;
            n1 = n2;
            n2 = res;
        }
        return res;
    }
};

最后更新: July 23, 2022