剑指Offer 2. 青蛙跳台阶问题

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模1e9+7(1000000007),如计算初始结果为:1000000008,请返回1

解题思路

类比于斐波那契数列的解法
f(x) 表示到x级台阶的方法数, 最后一步只能是一步或者两步,所以可以列出如下表达式
f(x) = f(x - 1) + f(x - 2)
当台阶只有一级的时候f(1) = 1, 显然f(0) = 0
所以我们可以用上面的递推式求出n级台阶的方法数

代码实现

func numWays(n int) int {
    pre, cur, res := 0, 0, 1
    for i := 1; i <= n; i++ {
	pre = cur
	cur = res
        pre, cur= pre % (1e9 + 7), cur % (1e9 + 7)
        res = pre + cur
        res= res % (1e9 + 7)
    }
    return res
}

作者:醉曦
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   醉曦  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示