博客
关于我
LeetCode 剑指 Offer 10- II. 青蛙跳台阶问题
阅读量:799 次
发布时间:2023-04-16

本文共 772 字,大约阅读时间需要 2 分钟。

为了解决这个问题,我们需要计算一只青蛙跳上 n 级台阶的总方法数。青蛙可以每次跳 1 级或者 2 级台阶。我们需要找到所有可能的跳法,并对结果取模 1e9+7。

方法思路

这个问题可以通过动态规划来解决。我们可以利用斐波那契数列的特性来简化计算,因为每次跳台阶的方法数等于前一次跳 1 级和前一次跳 2 级的方法数之和。

具体步骤如下:

  • 初始化两个变量 xy,分别表示跳到 n-2 级和 n-1 级的方法数。
  • 处理边界情况:当 n=0 或 n=1 时,返回 1;当 n=2 时,返回 2。
  • 对于 n>=3 的情况,使用循环从 3 到 n 计算每一步的方法数。
  • 每次循环中,更新 yx + y 并取模 1e9+7。
  • 返回最终的方法数 y
  • 解决代码

    int numWays(int n) {    const int mod = 1e9 + 7;    if (n < 2) return 1;    if (n == 2) return 2;    int x = 1, y = 2;    for (int i = 3; i <= n; ++i) {        int tmp = y;        y = (x + y) % mod;        x = tmp;    }    return y;}

    代码解释

  • 初始化常量:定义模数 mod 为 1e9+7。
  • 处理边界情况:当 n=0 或 n=1 时,直接返回 1;当 n=2 时,返回 2。
  • 循环计算:从 3 到 n 计算每一步的方法数。每次循环中,使用临时变量 tmp 存储旧的 y 值,然后更新 yx + y % mod
  • 返回结果:循环结束后,返回 y,即跳到 n 级台阶的总方法数。
  • 这种方法的时间复杂度是 O(n),空间复杂度是 O(1),非常高效。

    转载地址:http://rbgfk.baihongyu.com/

    你可能感兴趣的文章
    Oracle E-Business Suite软件 任意文件上传漏洞(CVE-2022-21587)
    查看>>
    Oracle EBS OPM 发放生产批
    查看>>
    Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql
    查看>>
    Oracle EBS环境下查找数据源(OAF篇)
    查看>>
    oracle Extract 函数
    查看>>
    uni-app开发环境自动部署的一个误区(App running at...)
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle instr函数详解
    查看>>
    Oracle Java所有版本的下载链接
    查看>>
    oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate
    查看>>
    oracle ORA-14402 OGG-01296
    查看>>
    oracle partition by list,深入解析partition-list 分区
    查看>>
    Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
    查看>>
    oracle rac集群的东西之QQ聊天
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>
    Oracle spatial 周边查询SQL
    查看>>