70 Climbing Stairs

原题链接:Climbing Stairs

本题是斐波那契数列,先上代码:

class Solution:
    # @param {integer} n
    # @return {integer}
    def climbStairs(self, n):
        if n == 1:
            return 1
        if n == 2:
            return 2
        a, b = 1, 1
        while n:
            a, b = b, a + b
            n -= 1
        return a

分析问题:
我先在纸上写下前几步的结果,观察规律。当n=1时,方法数为1;当n=2时,方法数为2;当n=3时,(由于我们只能选择上1层或者2层)我们先选择开始走1层这个方案,剩下两层,那么方法数就是n=2的方法数,然后再选择开始走2层这个方案,剩下一层,那么方法数就是n=1的方法数,因此n=3时的总方法数就是n=1时的方法数加上n=2时的方法数;
n=4时,先走1层的话,剩下3层,方法数为n=3,先走2层的话,剩下2层,方法数为n=2,因此n=4时的总方法数为n=2时的方法数加上n=3时的方法数。
由此,可发现规律,即是斐波那契数列。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • You are climbing a stair case. It takes n steps to reach ...
    stevewang阅读 5,342评论 0 3
  • 给出一个楼梯阶数,每次只能走一阶或两阶,求所有的走法 比较笨的方法 类似鸡兔同笼问题,设置oneStepCount...
    uzck阅读 1,241评论 0 0
  • 很经典的动态规划问题:基本情况为,当n为0时,0种方法,当n为1时,1种方法,当n为2时,2种方法.给了我们n阶台...
    xiaoyaook阅读 1,300评论 0 0
  • 策略一:市场价位段分析法 策略二:竞品价位降档法 策略三:价格测试法
    一代乔帮主阅读 1,677评论 0 0
  • 谢谢你此时 看我的诗,那么现在请你放下它, 这是你灵魂正当的安宁,因为接下来,你所读是我的,云朵阳光风雨造成的四季...
    之雪阅读 1,508评论 2 2