Leetcode70爬楼梯
经典动态规划:完全背包问题 - labuladong - 博客园
题目链接:70. 爬楼梯 - 力扣(LeetCode)
暴力递归
class Solution(object):def climbStairs(self, n):if n==1:return 1elif n==2:return 2return self.climbStairs(n-1) + self.climbStairs(n-2)
记忆化递归
class Solution(object):def __init__(self):self.memo = {}def climbStairs(self, n):if n in self.memo:return self.memo[n]if n <= 2:self.memo[n] = nelse:self.memo[n] = self.climbStairs(n-1) + self.climbStairs(n-2)return self.memo[n]
class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""def dfs(n,memo):if memo[n]==-1:memo[n]=dfs(n-1,memo)+dfs(n-2,memo)return memo[n]memo=[-1]*(n+1)memo[0]=1memo[1]=1return dfs(n,memo)
动态规划
class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""dp=[0]*(n+1)#n+1注意dp[0]=1dp[1]=1if n>=2:for i in range(2,n+1):dp[i]=dp[i-1]+dp[i-2]return dp[n]