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

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

一、题目

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

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

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

示例 3:

输入:n = 0
输出:1

提示:

0 <= n <= 100

二、解法

和上面一题比较类似

package com.aa.offer;

/**
 * @Description: 剑指 Offer 10- II. 青蛙跳台阶问题
 * @Author: AA
 */
public class Offer10_2 {
    public static void main(String[] args) {
        Offer10_1 offer10_1 = new Offer10_1();
        System.out.println(offer10_1.fib2(10));
    }

    //提交会超时
    public int numWays(int n) {
        if (n == 0) {
            return 1;
        }
        if (n == 1) {
            return 1;
        }
        return numWays(n - 1) + numWays(n - 2);
    }

    //下面的可以通过
    // 题目中,设置f0=1,个人认为是为了方便后续的的f2以上的计算。而不是为了原地打个托马斯全旋。
    public int numWays2(int n) {
        if (n == 0) {
            return 1;
        }
        if (n == 1) {
            return 1;
        }
        int res = 0;
        int first = 1;
        int second = 1;
        for (int i = 2; i <= n; i++) {
            res = (first + second) % 1000000007;
            first = second % 1000000007;
            second = res % 1000000007;
        }
        return res;
    }
}

剑指 Offer 03. 数组中重复的数字
剑指 Offer 04. 二维数组中的查找
剑指 Offer 05. 替换空格
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 07. 重建二叉树
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 12. 矩阵中的路径



声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接

你可能感兴趣的:(剑指offer,算法,数据结构,剑指offer)