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