动态规划理论基础
https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
视频:https://www.bilibili.com/video/BV13Q4y197Wg
- 主要题型
- 动规基础题
- 斐波那契数列
- 背包问题
- 打家劫舍
- 股票问题
- 子序列问题
- 动规基础题
- 解题五步走
- dp数组及下标的含义
- 递归公式
- dp数组的初始化
- 遍历顺序
- 打印dp数组(用于debug)
509. 斐波那契数
https://programmercarl.com/0509.%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.html
视频:https://www.bilibili.com/video/BV1f5411K7mo
- 考点
- 动规
- 我的思路
- 不自觉地就用动规五部曲写出来了
- 视频讲解关键点总结
- 动规五部曲
- 确定dp数组及其下标含义
- dp为斐波那契数列,dp[i]为第i个斐波那契数
- 递归公式
- dp[i] = dp[i - 1] + dp[i + 1]
- 初始化
- dp[0] = 0
- dp[1] = 1
- 遍历顺序
- 前到后
- 打印
- 本题无须debug
- 我的思路的问题
- 无
- 代码书写问题
- 无
- 可执行代码
class Solution:def fib(self, n: int) -> int:fib_list = [0, 1]if n == 0:return 0if n == 1:return 1for i in range(2, n + 1):fib_list.append(fib_list[i - 2] + fib_list[i - 1])return fib_list[n]
70. 爬楼梯