经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
70. Climbing Stairs
来源:cnblogs  作者:PilgrimHui  时间:2018/10/8 8:49:52  对本文有异议

问题

n阶楼梯,每次可以爬一或两步,问有多少种登顶的爬法。

思路

因为每次可以爬一步或两步。在第i个梯子上,有多少种爬法取决于在i-1和i-2的梯子上有多少种爬法。

简单的dp公式为:\(dp[i] = dp[i-1] + dp[i-2]\)

显然这是一个斐波纳契数列,直接用两个变量f1和f2叠加即可。

时间复杂度O(n),空间复杂度O(1)

代码

  1. class Solution(object):
  2. def climbStairs(self, n):
  3. """
  4. :type n: int
  5. :rtype: int
  6. """
  7. f1 = 1
  8. f2 = 0
  9. for i in range(n):
  10. f1, f2 = f1+f2, f1
  11. return f1
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号