Skip to content

剑指 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 注意:本题与主站 70 题相同:https://leetcode-cn.com/problems/climbing-stairs/

打表法:

js
/**
 * @param {number} n
 * @return {number}
 */
const ans = [
    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,
    4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229,
    832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817,
    39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733,
    134903163, 836311896, 971215059, 807526948, 778742000, 586268941, 365010934,
    951279875, 316290802, 267570670, 583861472, 851432142, 435293607, 286725742,
    722019349, 8745084, 730764433, 739509517, 470273943, 209783453, 680057396,
    889840849, 569898238, 459739080, 29637311, 489376391, 519013702, 8390086,
    527403788, 535793874, 63197655, 598991529, 662189184, 261180706, 923369890,
    184550589, 107920472, 292471061, 400391533, 692862594, 93254120, 786116714,
    879370834, 665487541, 544858368, 210345902, 755204270, 965550172, 720754435,
    686304600, 407059028, 93363621, 500422649, 593786270, 94208912, 687995182,
    782204094,
];

var numWays = function (n) {
    return ans[n];
};
/**
 * @param {number} n
 * @return {number}
 */
const ans = [
    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,
    4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229,
    832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817,
    39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733,
    134903163, 836311896, 971215059, 807526948, 778742000, 586268941, 365010934,
    951279875, 316290802, 267570670, 583861472, 851432142, 435293607, 286725742,
    722019349, 8745084, 730764433, 739509517, 470273943, 209783453, 680057396,
    889840849, 569898238, 459739080, 29637311, 489376391, 519013702, 8390086,
    527403788, 535793874, 63197655, 598991529, 662189184, 261180706, 923369890,
    184550589, 107920472, 292471061, 400391533, 692862594, 93254120, 786116714,
    879370834, 665487541, 544858368, 210345902, 755204270, 965550172, 720754435,
    686304600, 407059028, 93363621, 500422649, 593786270, 94208912, 687995182,
    782204094,
];

var numWays = function (n) {
    return ans[n];
};

动态规划:

js
/**
 * @param {number} n
 * @return {number}
 */
var numWays = function (n) {
    if (n < 2) return 1;
    let a = 1;
    let b = 1;
    let ans = 0;
    for (let i = 2; i <= n; i++) {
        ans = (a + b) % 1000000007;
        a = b;
        b = ans;
    }

    return ans;
};
/**
 * @param {number} n
 * @return {number}
 */
var numWays = function (n) {
    if (n < 2) return 1;
    let a = 1;
    let b = 1;
    let ans = 0;
    for (let i = 2; i <= n; i++) {
        ans = (a + b) % 1000000007;
        a = b;
        b = ans;
    }

    return ans;
};

Released under the MIT License.