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

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

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

1、引子

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

2、题目

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

每次你能够爬 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,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)。分析到这里,咱们不难看出这实际上就是斐波那契数列了。函数

二、编程实现

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 发布!

相关文章
相关标签/搜索