青蛙跳台阶问题

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


__EOF__

本文作者程序员小宇
本文链接https://www.cnblogs.com/treasury/p/12597545.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   程序员小宇  阅读(199)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示