码迷,mamicode.com
首页 > 其他好文 > 详细

青蛙跳台阶问题

时间:2020-03-30 13:00:39      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:斐波那契数列   tps   空间复杂度   使用   题解   多少   int   pre   for   

一只青蛙一次可以跳上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

青蛙跳台阶问题

标签:斐波那契数列   tps   空间复杂度   使用   题解   多少   int   pre   for   

原文地址:https://www.cnblogs.com/treasury/p/12597545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!