【C语言】【Leetcode】70. 爬楼梯


题目

链接: link

在这里插入图片描述

思路:简单递归 > 动态规划

这题类似于斐波那契数列的算法,结果其实就是到达前一步和到达前两步的方法之和,一直递归到n=1n=2时就行了,但是这种算法有个缺点就是递归的耗时太长了容易报错

在这里插入图片描述

int climbStairs(int n) {
    if (n == 1)
        return 1;
    else if (n == 2)
        return 2;
    else
        return climbStairs(n - 1) + climbStairs(n - 2);
}

在这里插入图片描述

所以这里我们可以尝试使用动态规划的方法,就是说这里我们是知道目标数的,所以我们可以直接利用for循环从1和2开始一直循环下去,使 f(n) = f(n-1) + f(n-2) 下去,比上面的递归的空间复杂度就小了很多,只有O(n),同时因为没有额外创建循环空间,所以最后空间复杂度是O(1)

int climbStairs(int n) {
    int p = 0;
    int q = 0;
    int s = 1;
    for (int i = 1; i <= n; i++) {
        p = q;
        q = s;
        s = p + q;
    }
    return s;
}

其实这里还可以用数学的方法做,但是有带你复杂就不说了,有兴趣可以去力扣官方解题思路里看看。

相关推荐

  1. LeetCode 70. 楼梯

    2024-03-27 04:40:04       69 阅读
  2. Leetcode 70 楼梯

    2024-03-27 04:40:04       55 阅读
  3. LeetCode70 楼梯

    2024-03-27 04:40:04       48 阅读
  4. LeetCode 70 楼梯

    2024-03-27 04:40:04       43 阅读
  5. leetcode70. 楼梯

    2024-03-27 04:40:04       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 04:40:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 04:40:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 04:40:04       87 阅读
  4. Python语言-面向对象

    2024-03-27 04:40:04       96 阅读

热门阅读

  1. day 39 动态规划02

    2024-03-27 04:40:04       34 阅读
  2. leetcode 455.分发饼干

    2024-03-27 04:40:04       39 阅读
  3. 前端实现导出xlsx功能

    2024-03-27 04:40:04       41 阅读
  4. react中使用google map展示地图

    2024-03-27 04:40:04       35 阅读
  5. 五.指针和引用的异同点

    2024-03-27 04:40:04       41 阅读
  6. OD C卷 - 贪心的歌手

    2024-03-27 04:40:04       40 阅读
  7. 【Kubernetes】在 CentOS 7 上搭建 Kubernetes

    2024-03-27 04:40:04       42 阅读