美文网首页
LeetCode初级算法--动态规划01:爬楼梯

LeetCode初级算法--动态规划01:爬楼梯

作者: xiaoming3526 | 来源:发表于2019-10-25 20:23 被阅读0次

    LeetCode初级算法--动态规划01:爬楼梯

    搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货
    csdn:https://blog.csdn.net/baidu_31657889/
    csdn:https://blog.csdn.net/abcgkj/
    github:https://github.com/aimi-cn/AILearners

    一、引子

    这是由LeetCode官方推出的的经典面试题目清单~
    这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcode推荐的题目。
    查看完整的剑指Offer算法题解析请点击github链接:
    github地址

    二、题目

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    注意:给定 n 是一个正整数。

    示例1:

    输入: 2
    输出: 2
    解释: 有两种方法可以爬到楼顶。
    1.  1 阶 + 1 阶
    2.  2 阶
    

    示例2:

    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
    1.  1 阶 + 1 阶 + 1 阶
    2.  1 阶 + 2 阶
    3.  2 阶 + 1 阶
    

    1、思路

    首先我可以确切的告诉你,这种简单的爬楼梯也是一个斐波那契数列,不信你自己从简单的数1,2,3..自己推论一下。

    接着,我们来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是跳一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2)。分析到这里,我们不难看出这实际上就是斐波那契数列了。

    2、编程实现

    python

    class Solution(object):
        def climbStairs(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n == 1:
                return 1
            a = 1
            b = 1
            for i in range(1,n):
                a , b = b , a+b
            return b
    

    AIMI-CN AI学习交流群【1015286623】 获取更多AI资料

    分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!

    本文由博客一文多发平台 OpenWrite 发布!

    相关文章

      网友评论

          本文标题:LeetCode初级算法--动态规划01:爬楼梯

          本文链接:https://www.haomeiwen.com/subject/uwyevctx.html