首页 > 其他 > 详细

剑指 Offer 10- II. 青蛙跳台阶问题

时间:2021-06-23 23:19:24      阅读:28      评论:0      收藏:0      [点我收藏+]

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

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

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

示例 3:

输入:n = 0
输出:1

提示:

  • 0 <= n <= 100

递归肯定过不了吧,不写了。

法一:基本dp

class Solution {
public:
    int numWays(int n) {
        int f[101] = {0};
        f[0] = 1;
        f[1] = 1;
        f[2] = 2;
        for(int i=3; i<=n; i++){
            f[i] = (f[i-1]+f[i-2])%(int)(1e9+7);
        }
        return f[n];
    }
};

法二: 滚动数组优化

class Solution {
public:
    int numWays(int n) {
        int first = 1, second = 1;
        for(int i=2; i<=n; i++){
            int tmp = second;
            second = (first+second)%(int)(1e9+7);
            first = tmp;
        }
        return second;
    }
};

技术分享图片

 

 

剑指 Offer 10- II. 青蛙跳台阶问题

原文:https://www.cnblogs.com/AbsolutelyPerfect/p/14924711.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!