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) 来获得相关源代码。