【剑指offer】面试题10- II:青蛙跳台阶问题(Java)
发布日期:2021-04-30 21:06:19 浏览次数:90 分类:精选文章

本文共 720 字,大约阅读时间需要 2 分钟。

一只青蛙可以跳1级或者2级台阶,求它跳到n级台阶的总方法数。这个问题可以通过动态规划来解决。

当n等于0或1时,只有一种方法:青蛙不跳或只跳一步。因此,结果都是1。

对于n大于等于2的情况,青蛙可以从n-1级跳1级到达n级,或者从n-2级跳2级到达n级。因此,到达n级的总方法数等于到达n-1级和n-2级的总方法数之和。

我们可以通过以下步骤解决这个问题:

  • 初始化一个动态规划数组dp,其中dp[i]表示跳到第i级台阶的总方法数。
  • 设置dp[0] = 1,dp[1] = 1。
  • 从i=2到n,计算dp[i] = (dp[i-1] + dp[i-2]) % MOD,其中MOD是1e9+7。
  • 返回dp[n]。
  • 例如:

    • 当n=2时,dp[2] = dp[1] + dp[0] = 1 + 1 = 2。
    • 当n=7时,dp[7] = dp[6] + dp[5] = 13 + 8 = 21。

    代码如下:

    class Solution {
    public int numWays(int n) {
    if (n == 0 || n == 1) {
    return 1;
    }
    int[] dp = new int[n + 1];
    dp[0] = 1;
    dp[1] = 1;
    for (int i = 2; i <= n; i++) {
    dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007;
    }
    return dp[n];
    }
    }
    上一篇:用Scanner遇到的问题
    下一篇:【剑指offer】面试题46. 把数字翻译成字符串(java)

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2026年06月11日 17时06分37秒