LeetCode70 爬楼梯(斐波那契数)
发布日期:2021-05-14 23:49:58 浏览次数:20 分类:精选文章

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

为了解决这个问题,我们需要计算爬楼梯的不同方法数。假设你每次可以爬1个或2个台阶,目标是到达楼顶。

方法分析

我们可以通过动态规划来解决这个问题。具体步骤如下:

  • 问题分析:每次可以爬1个或2个台阶,因此到达第n步的方法数等于到达n-1步和n-2步的方法数之和。这种递推关系与斐波那契数列相似。
  • 初始条件:当n=0或n=1时,只有一种方法,分别是爬0步和爬1步到顶部。
  • 递推关系:使用动态规划来计算每一步的结果,从而避免重复计算,提高效率。
  • 解决代码

    以下是一个使用动态规划的迭代方法:

    int climbStairs(int n) {    if (n == 0) return 1;    int a = 1, b = 1, c;    for (int i = 2; i <= n; i++) {        c = a + b;        a = b;        b = c;    }    return b;}

    代码解释

    • 初始化条件ab分别存储前两步的方法数,初始值都为1。
    • 循环计算:从第2步到第n步,逐步计算当前步的方法数c为前面两步的和,然后更新ab的值。
    • 返回结果:最终返回第n步的方法数b

    这种方法的时间复杂度为O(n),空间复杂度为O(1),非常适合处理较大的n值。

    上一篇:LeetCode279 完全平方数
    下一篇:LeetCode62/63/64 不同路径I/II/最小路径和

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月19日 12时15分02秒