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

(动态规划) 剑指 Offer 10- II. 青蛙跳台阶问题 ——【Leetcode每日一题】

❓剑指 Offer 10- II. 青蛙跳台阶问题

难度:简单

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

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

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

示例 3:

输入:n = 0
输出:1

提示

  • 0 <= n <= 100

注意:本题与 70. 爬楼梯 相同。

💡思路:动态规划

n = 1 时,只有一种跳法:
在这里插入图片描述
n = 2 时,有两种跳法:
在这里插入图片描述
n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为:
f ( n ) = { 1 n = 0 1 n = 1 2 n = 2 f ( n − 1 ) + f ( n − 2 ) n > 1 f(n)=\left\{\begin{array}{rcc}1&\quad n=0\\1&\quad n=1\\2&\quad n=2\\f(n-1)+f(n-2)&\quad n>1\end{array}\right. f(n)= 112f(n1)+f(n2)n=0n=1n=2n>1

🍁代码:(C++、Java)

C++

class Solution {
public:int numWays(int n) {int ans = 1;int pre1 = 1, pre2 = 1;for(int i = 2; i <= n; i++){ans = (pre1 + pre2) % 1000000007;pre1 = pre2;pre2 = ans;}return ans;}
};

Java

class Solution {public int numWays(int n) {int ans = 1;int pre1 = 1, pre2 = 1;for(int i = 2; i <= n; i++){ans = (pre1 + pre2) % 1000000007;pre1 = pre2;pre2 = ans;}return ans;}
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),循环执行 n 次,每次花费常数的时间代价,故渐进时间复杂度为 O ( n ) O(n) O(n)
  • 空间复杂度 O ( 1 ) O(1) O(1),只用了常数个变量作为辅助空间。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

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

相关文章:

  • 物联网WIFI 模块AT指令版本七大元凶
  • Qt 正则(数据格式校验、替换指定格式数据、获取匹配数据)
  • 网络层协议——ip
  • Qt6和Rust结合构建桌面应用
  • Kubernetes(K8S)简介
  • 面试中问:React中函数组件和class组件的区别,hooks模拟生命周期
  • Python高光谱遥感数据处理与高光谱遥感机器学习方法应用
  • Java实现接收xml格式数据并解析,返回xml格式数据
  • 【C++】初步认识模板
  • Ansible 临时命令搭建安装仓库
  • phpstorm动态调试
  • 二叉树的层序遍历及完全二叉树的判断
  • java八股文面试[JVM]——JVM内存结构
  • Kafka基本使用
  • 【目标检测】理论篇(2)YOLOv3网络构架及其代码实现
  • k8s之工作负载、Deployment、DaemonSet、StatefulSet、Job、CronJob及GC
  • IDEA项目实践——Element UI概述
  • Docker 容器学习笔记
  • Day03-vue基础
  • RAC sid=‘*‘ 最好加上 v$system_parameter
  • 【位运算进阶之----左移(<<)】
  • 石油石化行业网络监控运维方案,全局态势感知,实时预警
  • MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理
  • Diffusion Models for Image Restoration and Enhancement – A Comprehensive Survey
  • Springboot开发所遇问题(持续更新)
  • 智能电视与win10电脑后续无法实现DLNA屏幕共享
  • 如何可以管理监督员工工作微信?
  • 【Django】如何转化已有的数据表到Django模型--20230823
  • 【C语言】喝汽水问题
  • 项目进度管理(4-2)关键链法和关键路径法的区别和联系