当前位置: 首页 > news >正文

剑指 Offer 10- II. 青蛙跳台阶问题(LeetCode 70. 爬楼梯)(动态规划打表)

题目:

链接:剑指 Offer 10- II. 青蛙跳台阶问题;LeetCode 70. 爬楼梯
难度:简单
相关博文:剑指 Offer 10- I. 斐波那契数列(动态规划打表)

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1

输入:n = 2
输出:2

示例 2

输入:n = 7
输出:21

示例 3

输入:n = 0
输出:1

提示

  • 0 <= n <= 100

解题思路:

已知一只青蛙一次只能跳1阶或2阶台阶,故可知第n阶的青蛙一定是从第n-1阶或第n-2阶跳过来的,得动态规划的状态转移方程为F(N) = F(N - 1) + F(N - 2),正好为斐波那契数列。
注意,这里不能用递归的方式写,因为有大量的重复计算,具体原因分析见上一篇剑指 Offer 10- I. 斐波那契数列(动态规划打表)。

代码:

class Solution {
public:int numWays(int n) {if(n <= 1) return 1;int a,b,c;b = 1;c = 1;for(int i = 2; i <= n; i++){a = b;b = c;c = (a + b) % 1000000007;}return c;}
};

时间复杂度O(n),空间复杂度O(1)。

http://www.lryc.cn/news/8169.html

相关文章:

  • webpack(高级)--文件的压缩Terser(js/css/html) Tree Shaking
  • 做软文发布需要注意哪些细节?
  • 【Python】一篇文章读懂yield基本用法
  • Docker getting started
  • 【Uniapp使用遇到问题合集】
  • 宝塔面板破解最新教程
  • 基于zookeeper的Hadoop集群搭建详细步骤
  • 职称有哪些意义?如何提升职称?
  • mulesoft MCIA 破釜沉舟备考 2023.02.15.09
  • 【项目实战】@ConditionalOnProperty注解让我少写了一些if判断
  • SQL中的游标、异常处理、存储函数及总结
  • Splashtop:支持M1/M2芯片 Mac 电脑的远程控制软件
  • 实验十三、阻容耦合共射放大电路的频率响应
  • 【每天进步一点点】函数表达式和函数声明
  • JavaScript void
  • 笔记本电脑怎么连接无线网wifi?不同电脑系统的使用教程(2023最新)
  • 从lettcue插件看skywalking
  • explain 每个列的含义
  • 网络通信编程基础
  • Linux网络编程
  • ***httpGet,httpPost,postman_http,httpClientSocket,httpSocketServer***
  • Downie4.6.7
  • 重构是什么
  • (考研湖科大教书匠计算机网络)第四章网络层-第六节1:路由选择协议概述
  • vue2源码之生命周期篇
  • 从零实现WebRTC(三):WebRTC中重要的API
  • shell脚本的编写以及shell中语句(嵌入式学习)
  • 2023年高新技术企业怎么申报认定
  • GIS状态检测新技术——振动分析法
  • Python进阶篇(一)-- Django快速上手