青蛙跳台阶问题

Posted treasury

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了青蛙跳台阶问题相关的知识,希望对你有一定的参考价值。

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

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

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

提示:

0 <= n <= 100

题解思路:

这道题是不是和斐波那契额数列很像呢?

设跳上 n 级台阶有 f(n) 种跳法。在所有跳法中,青蛙的最后一步只有两种情况: 跳 1级或 2级台阶。
  当为 1 级台阶: 剩 n-1 个台阶,此情况共有 f(n-1) 种跳法;
  当为 2 级台阶: 剩 n-2 个台阶,此情况共有 f(n-2) 种跳法。

即 f(n)=f(n-1)+f(n-2)

但是它的前俩项与斐波那契数列不同

f(0)=1;    表示跳上0阶台阶有一种跳法,那就是不跳

f(1)=1;

 

这种题一般有三种解法,却来越好的办法:

  直接递归

  带备忘录的递归

  自下而上使用dp table(本方法有还可以优化,使空间复杂度变为O(1) )

题解:

 1 class Solution {
 2     public int numWays(int n) {
 3         int a = 1, b = 1, sum;
 4         for(int i = 0; i < n; i++){
 5             sum = (a + b) % 1000000007;
 6             a = b;
 7             b = sum;
 8         }
 9         return a;
10     }
11 }

 

链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof

以上是关于青蛙跳台阶问题的主要内容,如果未能解决你的问题,请参考以下文章

青蛙跳台阶

青蛙跳台阶

▷青蛙跳台阶◁

Python算法题——青蛙跳台阶

青蛙跳台阶-普通版-Java实现

青蛙跳台阶问题。