博客
关于我
Leetcode|70. 爬楼梯【笔记】
阅读量:712 次
发布时间:2019-03-21

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

爬楼梯问题解析

爬楼梯问题要求我们计算爬到n阶楼梯的不同方法数,每次可以爬1或2阶台阶。这个问题可以通过斐波那契数列来解决,其解答方法包括递归、动态规划、矩阵快速幂等。

4种常见解法:

  • 递归方法

    递归的思路是用费波那契的性质: f(n) = f(n-1) + f(n-2)
    例子:

    import functools@functools.lru_cache(maxsize=None)def climbStairs(n: int) -> int:    if n == 1:        return 1    if n == 2:        return 2    return climbStairs(n - 1) + climbStairs(n - 2)
  • 动态规划优化

    使用动态规划存储前两步结果,节省空间。
    例子:

    def climbStairs(n: int) -> int:    if n == 1 or n == 2:        return n    a, b, temp = 1, 2, 0    for i in range(3, n + 1):        temp = a + b        a = b        b = temp    return temp
  • 斐波那契公式

    使用矩阵快速幂或公式直接计算。
    例子:

    import mathdef climbStairs(n: int) -> int:    if n < 2:        return 1    sqrt5 = math.sqrt(5)    return int(( (1 + sqrt5) ** (n + 1) - (1 - sqrt5) ** (n + 1) ) / (2 * sqrt5))
  • 斐波那契数列的通项

    借助斐波那契数列的通项计算。
    例子:

    import mathdef climbStairs(n: int) -> int:    if n == 1:        return 1    elif n == 2:        return 2    elif n < 0:        return 0    return _fib(n + 1)
  • 关键点总结:

    • 问题基于斐波那契数列。
    • 递归角度计算,需缓存优化。
    • 动态规划优化空间使用,常数空间。
    • 斐波那契公式适用于大数计算。
    • 动态规划常数空间优化方案较为高效。

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

    你可能感兴趣的文章
    PHP开发遇到错误0001
    查看>>
    php异常处理
    查看>>
    PHP引入了泛型和集合两大重要特性,大大改善 PHP 代码的可维护性和可读性
    查看>>
    PHP引擎php.ini参数优化
    查看>>
    PHP引用(&)使用详解
    查看>>
    php引用及垃圾回收
    查看>>
    php当前时间的集中写法
    查看>>
    php循环比较数组中的值,如何从PHP数组中计算值并在foreach循环中仅显示一次值?...
    查看>>
    php微信 开发笔记,微信WebApp开发总结笔记
    查看>>
    php微信公众号开发access_token获取
    查看>>
    php微信公众号开发微信认证开发者
    查看>>
    php微信公众号开发用户基本信息
    查看>>
    php怎么将对象变成数组,php怎么将对象转换成数组
    查看>>
    RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列
    查看>>
    php怎样比较两数大小,jquery如何判断两个数值的大小
    查看>>
    PHP性能监控 - 开启xhprof(一)
    查看>>
    PHP性能监控 - 怎么看xhprof报告(二)
    查看>>
    php截取字符串代码,PHP字符串截取_php
    查看>>
    php截取字符串,无乱码
    查看>>
    php手冊,php手冊之變量范圍
    查看>>