码迷,mamicode.com
首页 > 其他好文 > 详细

70. Climbing Stairs

时间:2018-10-05 21:08:32      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:空间   用两个   obj   range   for   bing   数列   turn   tair   

问题

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

思路

因为每次可以爬一步或两步。在第i个梯子上,有多少种爬法取决于在i-1和i-2的梯子上有多少种爬法,简单的dp公式为:\(dp[i] = dp[i-1] + dp[i-2]\)。显然这是一个斐波纳契数列,直接用两个变量f1和f2叠加即可。

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

代码

class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        f1 = 1
        f2 = 0
        for i in range(n):
            f1, f2 = f1+f2, f1
        return f1

70. Climbing Stairs

标签:空间   用两个   obj   range   for   bing   数列   turn   tair   

原文地址:https://www.cnblogs.com/liaohuiqiang/p/9745716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!