lintcode:爬楼梯(递归,迭代,动态规划)
程序员文章站
2022-03-24 17:37:38
...
class Solution:
"""
@param n: An integer
@return: An integer
"""
def climbStairs(self, n):
# write your code here
# n 1 2 3 4 5
# r 1 2 3 5 8
# 递归 超时 70% 39
# if n == 1:
# return 1
# if n == 2:
# return 2
# return self.climbStairs(n - 1) + self.climbStairs(n - 2)
# 迭代
# a, b = 1, 2
# for i in range(1, n):
# a, b = b, a + b
# return a
# 动态规划
dp = [0]*(n + 1)
if n == 0 or n == 1:
return 1
dp[1], dp[2] = 1, 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
# print(i)
# print(dp[i - 1])
return dp[n]
刚开始用动态规划时开的数组是n 导致循环时一直越界,一直在改range和return中的n, 结果就是一直错,后来才改的数组大小。
上一篇: [spark streaming]Executor容错安全性
下一篇: 数组中的子数组之和问题
推荐阅读
-
分析python动态规划的递归、非递归实现
-
120. 三角形最小路径和 (C语言+暴力递归+优化递归+动态规划+空间优化动态规划)
-
【Hard 递归 动态规划 回文串15】LeetCode 730. Count Different Palindromic Subsequences
-
[每日一题] 116. 通配符匹配(字符串、动态规划、递归、多方法)
-
LintCode 77. 最长公共子序列(C++ 动态规划)
-
递归、动态规划、回溯法解决整数划分问题,并输出所有划分情况
-
LeetCode 解码方法(DFS,递归,动态规划)
-
递归&动态规划-解码方法
-
最小路径和(递归 / 动态规划解法图解)(Java版)
-
lintcode:二叉树的中序遍历 递归,迭代,Morris