图解LeetCode——剑指 Offer 10- II. 青蛙跳台阶问题
一、题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
二、示例
2.1> 示例 1:
【输入】n = 2
【输出】2
2.2> 示例 2:
【输入】n = 7
【输出】21
2.3> 示例 3:
【输入】n = 0
【输出】1
提示:
0<= n <=100
三、解题思路
根据题目描述,青蛙只能跳1级台阶或者跳2级台阶,那么我们可以针对这个条件,演示一下不同台阶青蛙的跳法。比如:
- 对于1阶台阶来说,小青蛙只有1种跳法,就是向上跳1级;
- 对于2阶台阶来说,小青蛙有2种跳法,分别是:向上跳1级然后再跳1级 & 直接向上跳2级;
- 对于3阶台阶来说,小青蛙有3种跳法,分别是:执行3次1级跳 & 直接向上跳2级再跳1级 & 先跳1级然后直接向上跳2级;
- 对于4阶台阶来说,小青蛙有5种跳法,分别是:执行4次1级跳 & 2次1级跳再直接跳2级 & 直接跳2级再执行2次1级跳 & 1级跳再直接跳2级再执行1次1级跳 & 执行2次2极跳;
- ……
针对上面描述,我们来看下面图示,会更好理解一些:

从上面的示例中,我们可以看到从1阶到4阶的跳法分别是:1种、2种、3种、5种……,是不是似曾相识呢?是的,就是斐波那契数列!那为什么会是这样的规律呢?下面我们以第n级台阶来看,对于它来说,往前一步其实只有两种情况:
【情况1】在第
n-1级处,那么只需要向上跳1步即可。
【情况2】在第n-2级处,那么只需要向上跳2步即可。
既然是这样,我们以f(n)表示到达第n级阶梯的跳法,那么可以推理出 f(n) = f(n-1) + f(n-2) , 所以,我们根据推导出的公式关系,就可以解出——青蛙跳上一个 n 级的台阶总共有多少种跳法了。

四、代码实现
class Solution {public int numWays(int n) {int a = 1, b = a, c = b, mod = (int)1e9 + 7;for (int i = 2; i <= n; i++, a = b, b = c) c = (a + b) % mod;return c;}
}

今天的文章内容就这些了:
写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。
更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」
相关文章:
图解LeetCode——剑指 Offer 10- II. 青蛙跳台阶问题
一、题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007),如计算初始结果为:1000000008,请返回 1。 二、示例 2.1>…...
【Linux】用户分类+权限管理+umask+粘滞位说明
目录 1.用户分类 su指令 2.认识Linux权限 2.1 文件访问者的分类 2.2 文件类型和访问权限 a. 文件类型 file指令 b. 访问权限 2.3 文件权值的表示方法 a. 字母表示法 b. 八进制表示法 3.如何修改文件访问者的权限及相关指令 1. chmod指令 2. chown指令 3. chgrp指…...
【干货】如何打造HR无法拒绝的简历?测试开发大牛带手把手你写简历!
通过率90%,优秀的软件测试简历长什么样? 也许口才好的人会觉得简历不重要,能说就行了,那是因为你没有体会过石沉大海的感觉! 很多人觉得疑惑,为什么我投了那么多简历,都没有接到面试通知&…...
nodejs学习-4:nodejs连接mongodb和相关操作
1. express生成器生成express模板 前提需要首先下载好:express-generator,命令如下(全局安装) npm install -g express-generator生成模板命令如下: express 项目名称 --viewejs // --view 参数表示前端界面使用的引擎,这里使用…...
【博客629】Linux DNS解析原理与配置
Linux DNS解析原理与配置 1、DNS缓存 作用: 程序客户端、下游的 DNS 服务器每次查询 DNS 成功之后,通常会将该 DNS 记录缓存一段时间,避免频繁发出查询请求的耗时。 Linux下的DNS缓存: Linux 系统默认不会在本地建立 DNS 缓存…...
【CSP】202212-2 训练计划
题目 问题背景 西西艾弗岛荒野求生大赛还有 天开幕! 问题描述 为了在大赛中取得好成绩,顿顿准备在 天时间内完成“短跑”、“高中物理”以及“核裂变技术”等总共 项科目的加强训练。其中第 项( )科目编号为 ,也可简…...
java基础学习 day42(继承中构造方法的访问特点,this、super的使用总结)
继承中,构造方法的访问特点 父类的构造方法不会被子类继承,但可以通过super()调用父类的构造方法,且只能在子类调用,在测试类中是不能手动单写构造方法的。子类中所有的构造方法默认先调用父类的无参构造,再执行自己构…...
生物医药多组学与生物信息方法介绍
基因组学告诉你可能发生什么,转录组学和蛋白组学告诉你即将发生什么,而代谢组学告诉你正在发生什么 1、多组学与生信方法 生物医学技术的组学包括基因组学、转录组学、蛋白质组学、代谢组学和表观基因组学等。这些组学研究领域通过大量数据的高通量技术…...
【进阶篇】线程的硬件基础
文章目录高速缓存缓存一致性协议写缓冲区和无效化队列高速缓存 简介 高速缓存是主内存与处理器之间的硬件,其容量小于主存,但存取速率远高于主存。因此处理器在执行读写操作时,可直接和高速缓存交互,提高响应速度。 我们常见的变…...
关于 ISP Tuning的学习,分享几点看法
关于学习,分享几点看法,欢迎讨论 。1、分阶段性的,阶梯式学习。2、带目的性的,任务式学习。3、有总结性的,输出式学习。如上3条,可以依次循环去执行,下面我以 ISP Tuning 的学习为例,…...
RocketMQ源码阅读
没有用过rocketmq,但是一直对RocketMQ的实现很感兴趣,本次阅读源码基于5.0.0 一、 nameserver 通过源码阅读发现,它的作用主要是当作一个注册中心,注册broker、topic等信息,维护topic以及broker队列的路由信息&#…...
重磅 | 小O软件新品【鲸鱼地图】发布
千呼万唤始出来.......,小O系列软件又添新品【鲸鱼地图】!!! 2023年新年伊始,小O就投入到新品研发工作中,秉承“发现地理价值”理念,为用户提供更加好用、易用的地图软件产品,经过春…...
软考高级信息系统项目管理师系列之二十五:项目合同管理
软考高级信息系统项目管理师系列之二十五:项目合同管理 一、项目合同管理内容整理一、合同管理基本概念1.项目合同管理定义2.合同的分类3.合同类型选择4.合同内容二、合同管理过程1.合同管理过程的内容2.合同签订和履行管理3.合同变更和档案管理4.合同违约索赔管理项目合同管理…...
测试开发之Django实战示例 第十三章 上线
在上一章,为其他程序与我们的Web应用交互创建了RESTful API。本章将学习如何创建生产环境让我们的网站正式上线,主要内容有:配置生产环境创建自定义中间件实现自定义管理命令1创建生产环境现在该将Django项目正式部署到生产环境中了。我们将按…...
python实战应用讲解-【语法基础篇】Python中的数值类型(附示例代码)
目录 前言 数值类型 十六进制、八进制和二进制 Python 数值类型转换 数值和表达式 前言...
Git常用命令以及如何在IDEA中使用Git
前言Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。Git在管理文件过程中会记录日志,方便回退到历史版本;Git存在分支的概念,一个项目可以有多个分支&…...
音乐播放器-- 以及数据库数据存储
运行环境 : java1.8 数据库以及代码编写工具 : sqlserver -- mysql 也可以 工具 eclipse 编码gbk窗体 : Swing使用了jaudiotagger 进行了音乐处理 图片展示 ----- 空闲时间 做出来玩的项目 部分功能还没有完善 完善了的功能 音乐 /// 主页 &a…...
[JAVA安全]Spring Messaging之CVE-2018-1270
漏洞简介 Spring 框架中通过spring-messaging 模块来实现 STOMP (Simple Text-Orientated Messaging Protocol),STOMP是一种封装 WebSocket的简单消息协议。攻击者可以通过建立WebSocket连接并发送一条消息造成远程代码执行, spring-messagin…...
CAN通信笔记-位时间、Tq及采样点同步
本文框架1.前言2. 位时间2.1 位时间定义2.2 位时间计算3. Tq3.1 Tq的计算3.1.1 举个例子3.2 位时间与Tq的换算4. 采样点同步4.1 硬同步4.2 重同步4.2.1 延长PBS1的重同步4.2.2 缩短PBS2的重同步1.前言 本篇记录些关于CAN的一些学习笔记,说实话CAN协议发展的已经非常…...
不止是记事本!Win10右键新建菜单终极自定义指南:排序、删除、添加任意文件类型
不止是记事本!Win10右键新建菜单终极自定义指南:排序、删除、添加任意文件类型 在Windows 10的日常使用中,右键新建菜单可能是最容易被忽视却高频使用的功能之一。想象一下这样的场景:你刚刚安装了一款专业设计软件,却…...
Task人工智能:如何用Go语言工具构建高效的ML模型训练流水线
Task人工智能:如何用Go语言工具构建高效的ML模型训练流水线 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task 在当今的机器学习开发中&#x…...
保姆级教程:用Materials Studio切(111)晶面并构建真空层,一步步教你分析晶体生长
从零开始掌握Materials Studio晶体表面建模:以(111)晶面为例的完整实战指南 在材料模拟与计算化学领域,精确构建晶体表面模型是研究催化反应、界面特性以及材料生长机制的基础环节。Materials Studio作为业界广泛采用的模拟平台,其表面建模功…...
TensorRT量化实战:手把手教你用Entropy Calibration校准激活值(附代码避坑)
TensorRT熵校准实战:从理论到代码的完整避坑指南 引言 在深度学习模型部署领域,量化技术已经成为减小模型体积、提升推理速度的关键手段。而作为量化过程中的核心环节,激活值校准直接决定了最终模型的精度表现。TensorRT提供的Entropy Calibr…...
NAS极速搭建PostgreSQL:打造个人专属数据仓库
1. 为什么选择NASPostgreSQL组合? 最近几年,越来越多的技术爱好者开始在家用NAS上部署数据库服务。我自己从2018年开始尝试这种方案,先后测试过MySQL、MongoDB和PostgreSQL,最终发现PostgreSQL在NAS上的表现最为出色。相比云数据库…...
Systemback实战:从系统备份到自定义镜像部署全流程
1. Systemback基础入门:你的系统时光机 第一次听说Systemback时,我正面临着一个典型运维困境:实验室20台Ubuntu工作站需要统一部署开发环境。传统的手动安装方式不仅耗时,还容易产生配置差异。直到发现这个开源神器,才…...
如何三步轻松下载B站高清视频:BilibiliDown完整使用指南
如何三步轻松下载B站高清视频:BilibiliDown完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
各高校论文AI率标准差异解读:从10%到30%不同学校标准差距2026年免费达标方案
各高校论文AI率标准差异解读:从10%到30%不同学校标准差距2026年免费达标方案 关于高校论文AI率标准解读,我系统研究过一段时间,也实际验证过各种说法。 这篇文章把关键的逻辑理清楚——知道了原理,遇到问题就知道该怎么处理了。…...
DeepSeek Saga模式性能压测实录(TPS从1.2K飙升至8.6K):异步事件总线+快照版本向量的组合拳揭秘
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Saga模式性能压测实录(TPS从1.2K飙升至8.6K):异步事件总线快照版本向量的组合拳揭秘 在真实生产级负载下,DeepSeek R1模型启用Saga模式后&#…...
告别NuWriter!手把手教你用命令行打包新唐NUC980 SPI NAND完整系统镜像
新唐NUC980 SPI NAND量产化镜像构建实战指南 在嵌入式设备量产过程中,传统烧录方式往往成为效率瓶颈。当面对新唐NUC980这类基于SPI NAND的工控设备时,产线工程师常需要反复切换工具链、分步烧录不同组件,不仅耗时费力,还容易因人…...
