LeetCode Climbing Stairs

LeetCode解题之Climbing Stairs

原题

一共有n级楼梯,每次能够爬一级或两级,共有多少种不同的爬法爬到顶端。

注意点:

例子:

输入: n = 6

输出: 13

解题思路

典型的动态规划题,递推表达式为 dp[i]=dp[i-1]+dp[i-2],n为1时只有一种方法,n为2时有两种方法。

AC源码

class Solution(object):
    def climbStairs(self, n):
        """ :type n: int :rtype: int """
        if n <= 2:
            return n
        dp = [0 for __ in range(n)]
        dp[0] = 1
        dp[1] = 2
        for i in range(2, n):
            dp[i] = dp[i - 1] + dp[i - 2]
        return dp[n - 1]


if __name__ == "__main__":
    assert Solution().climbStairs(6) == 13

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

你可能感兴趣的:(LeetCode,算法,python,动态规划)