图解LeetCode——剑指 Offer 10- II. 青蛙跳台阶问题

news2024/9/23 23:27:24

一、题目

一只青蛙一次可以跳上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^)/ ~ 「干货分享,每天更新」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

inno setup打包软件学习

目录 一 打包结果 二 示例打包脚本 三 错误解决 3.1 另一个程序正在使用此文件&#xff0c;进程无法访问 3.2 桌面图标无法修改 四 参考资料 一 打包结果 测试程序来自&#xff1a; 泽森科工 (zenustech.com) 二 示例打包脚本 使用打包软件下载地址&#xff1a; in…

[U3D ShaderGraph] 全面学习ShaderGraph节点 | 第四课 | Input/Lighting

📣📣📣本专栏所有内容在完结之前全部为试读模式,专栏完结之后会取消试读模式,如果感觉内容还不错的话请支持一下📣📣📣 ShaderGraph是可视化的着色器编辑工具。您可以使用此工具以可视方式创建着色器。 本专栏可以让你更了解ShaderGraph中每个节点的功能,更自如的…

BUUCTF Reverse xor

题目&#xff1a;BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳&#xff0c;没壳&#xff0c;IDA打开 main函数很好理解&#xff0c;输入一个长度为33的字符串&#xff0c;1-32位与前一位异或后与global相等&#xff0c;则判定flag正确 找global 在strings window直…

【Java】《Java8 实战》 CompletableFuture 学习

文章目录前言1. 并发(Concurrent) 和 并行(Parallel)1.1 并发的来源1.2 并发技术解决了什么问题2. 并行的来源2.1 并行解决了什么问题3. CompletableFuture 简介4. CompletableFuture 简单应用5. CompletableFuture 工厂方法的应用6. CompletableFuture join() 方法7. 使用 Par…

2022黑马Redis跟学笔记.实战篇(七)

2022黑马Redis跟学笔记.实战篇 七4.11.附近的店铺功能4.11.1. GEO数据结构的基本用法1. 附近商户-导入店铺数据到GEO4.11.2. 获取附近的店铺1. 附近商户-实现附近商户功能4.9. 签到功能4.9.1.BitMap原理1. 用户签到-BitMap功能演示4.9.2.实现签到功能4.9.3.实现补签功能4.9.4.统…

.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)

文章目录思路客户端权限清单&#xff08;AndroidManifest.xml&#xff09;权限列表(完整内容看 权限清单&#xff08;AndroidManifest.xml&#xff09;&#xff09;打开外部应用的权限(完整内容看 权限清单&#xff08;AndroidManifest.xml&#xff09;&#xff09;添加文件如下…

网络数据包接收流程

1. 网络数据包接收流程简述 典型的以太网卡网络包接收流程如下&#xff1a; 1.网络包通过物理介质传到接收端的phy芯片&#xff1b; 2.phy芯片通过RGMII协议传到MAC芯片rx queue fifo中&#xff1b; 3.MAC芯片通过专用DMA将网络包搬运到网卡驱动程序预先分配好的rx ringbuffer中…

【多线程与高并发】- synchronized锁的认知

synchronized锁的认知 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xf…

言简意赅+图解 函数传参问题(传值、传地址 500字解决战斗)

1、传值 2、传地址 不论是传值&#xff0c;还是传地址&#xff0c;形参都是对于实参的一份拷贝 下图为按值传递进行交换&#xff1a; 形参left拷贝一块新空间&#xff0c;形参right拷贝一块新空间 下图为按指针传递进行交换 形参left拷贝一块新的空间&#xff0c;形参right…

研究生薪资管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-5】研究生薪资管理系统 【案例介绍】 案例描述 在学校中&#xff0c;学生每个月需要交相应的生活费&#xff0c;老师每个月有相应的工资&#xff0c;而在职研究生既是老师又是学生&#xff0c;所以在职研究生既需要交学费又会有工资。下面要求编写一个程序来统计在职…

最完整的小红书带货笔记——垂直模式

最完整的小红书带货笔记——垂直模式&#xff0c;小红书直播复盘怎么做&#xff1f;#直播带货笔记 第1篇&#xff0c;带你解锁直播复盘5大要点&#xff01; #小红书店铺#小红书运营 小红书怎么发带货笔记&#xff1f; 做小红书带货的同学注意了&#xff0c;我们带货一定要发笔…

看见统计——第三章 概率分布

看见统计——第三章 概率分布 参考 https://github.com/seeingtheory/Seeing-Theory中心极限定理 概率分布描述了随机变量取值的规律。 随机变量Random Variables &#x1f525; 定义&#xff1a;将样本空间中的结果映射到实数的函数 XXX 称为随机变量(random variable)&a…

【算法基础】链表

一、单链表例题&#xff1a;实现一个单链表&#xff0c;链表初始为空&#xff0c;支持三种操作&#xff1a;向链表头插入一个数&#xff1b;删除第 k个插入的数后面的数&#xff1b;在第 k&#xfffd; 个插入的数后插入一个数。现在要对该链表进行 M次操作&#xff0c;进行完所…

单片机——显示方式

数码LED 一、静态显示方式 1、连接 所有LED的位选均共同连接到VCC或GND&#xff0c;每个LED的8根段选线分别连接一个8位并行I/O口&#xff0c;从该I/O口送出相应的字型码显示字型。 2、这种连接方式的缺点就是需要的数据线太多&#xff1a;我们可以计算一下&#xff1a;8*4133根…

[oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB

编码进化 回忆上次内容 上次 回顾了 字符大战的结果 ibm 曾经的 EBCDIC 由于字符不连续的隐患 导致后续 出现 无数问题无法补救 7-bit 的 ASA X3.4-1963 字母序号连续 比较字符时 效率高判断字符 是否是字母 也很容易 获得了 IBM以外公司的 支持 为什么 ASA X3.4-1963 是 7…

PHP 页面静态化

前言随着网站的内容的增多和用户访问量的增多&#xff0c;网站加载会越来越慢&#xff0c;受限于带宽和服务器同一时间的请求次数的限制&#xff0c;&#xff0c;我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。一、页面静态化概念静态化定义静态化就是指把原…

VNCTF 2023 - Web 象棋王子|电子木鱼|BabyGo Writeups

象棋王子 签到题&#xff0c;jsfuck解密 丢到console得到flag 电子木鱼 后面两道都是代码审计&#xff0c;这题是rust&#xff0c;题目给出了源码&#xff0c;下载下来看 关键代码&#xff1a; 由于限制&#xff0c;quantity只能为正数 功德也只能是正数&#xff08;负数的…

如何下载JDK8源码并导入IDEA

目录一、下载JDK8源码二、将源码导入IDEA一、下载JDK8源码 JDK8源码下载地址&#xff1a; https://hg.openjdk.org/ 1.打开下载地址&#xff0c;JDK8的源码都是基于jdk8u之上&#xff0c;所以点击jdk8u 2.进入页面之后可以看到一些小版本&#xff0c;这里我们选择 jdk8u60&am…

Python 之 Pandas Series 数据结构

文章目录一、Series 结构二、数据结构 Series 创建1. 创建1.1 列表/数组作为数据源创建 Series1.2 字典作为数据源创建 Series1.3 通过标量创建2. 参数说明2.1 index 参数2.2 name 参数2.3 copy 参数三、Series 的索引/切片1. 下标索引2. 标签索引3. 切片四、Series 数据结构的…

WSL1和WSL2相互转换以及安装路径迁移相关问题

目录 1.从WSL 1如何切换到WSL 2&#xff1f; 2.从WSL 2如何切换回WSL 1&#xff1f; 3.WSL1转换为WSL2后&#xff0c;WSL1里面安装的程序和库需要重装吗&#xff1f; 4.WSL2转换为WSL1后&#xff0c;WSL2里面安装的程序和库需要重装吗&#xff1f; 5.如何备份WSL2&#xf…