当前位置:网站首页>动态规划相关:三角形最小路径和
动态规划相关:三角形最小路径和
2022-08-09 15:04:00 【凤求凰的博客】
文章目录
一、爬楼梯

1、自顶向下
memo = {
1:1, 2:2}
class Solution:
def climbStairs(self, n: int) -> int:
# dp 自顶向下 -> 记忆化递归
if n not in memo:
memo[n] = self.climbStairs(n - 1) + self.climbStairs(n - 2)
return memo[n]
2、自底向上
class Solution:
def climbStairs(self, n: int) -> int:
# dp 自底向上
if n == 1: return 1
dp = [0 for _ in range(n+1)]
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
# dp列表你可以认为它主要用途,是为了得到最后结果,用来存储中间结果
dp[i] = dp[i-1]+dp[i-2] # 递推公式,或叫dp方程、状态转移方程
return dp[n]
下面我们来 优化内存,上面用了列表!其目的是为了得到最后结果,用来存储中间结果,其实本题而言我们暂存dp[i-1]、dp[i-2]两个值即可,不断向后迭代更新这两个值!
class Solution:
def climbStairs(self, n: int) -> int:
# dp 自底向下:本质循环--即迭代法
if n <= 3: return n
a, b = 2, 3 # 计算我们从第四阶计算走即可!四阶前面都是ret n
for _ in range(n-3):
a, b = b, a + b
return b
二、三角形最小路径和

1、自顶向下
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
# dp 自顶向下
dp = [[0 for _ in range(i+1)] for i in range(len(triangle))]
def dfs(i,j):
if i >= len(triangle):
return 0
if not dp[i][j]:
sub1 = dfs(i+1,j)
sub2 = dfs(i+1,j+1)
dp[i][j] = min(sub1, sub2)+triangle[i][j]
return dp[i][j]
return dfs(0,0)
2、自底向上
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
dp = triangle
# 最后一排不用遍历,且索引等于长度-1,所以len(triangle) - 2
for i in range(len(triangle) - 2, -1, -1):
for j in range(len(triangle[i])):
dp[i][j] += min(dp[i+1][j],dp[i+1][j+1])
return dp[0][0]
四、编辑距离
1、自顶向下
2、自底向上
五、最长有效括号
1、自顶向下
2、自底向上
六、最小路径和
1、自顶向下
2、自底向上
七、解码方法
1、自顶向下
2、自底向上
八、最大正方形
1、自顶向下
2、自底向上
九、矩形区域不超过K的最大数值和
1、自顶向下
2、自底向上
十、青蛙过河
1、自顶向下
2、自底向上
十一、分割数组的最大值
1、自顶向下
2、自底向上
十二、学生出勤记录II
1、自顶向下
2、自底向上
十三、任务调度器
1、自顶向下
2、自底向上
十四、戳气球
1、自顶向下
2、自底向上
边栏推荐
猜你喜欢
随机推荐
Fiddler抓包夜神模拟器
Office365 AzureAD Intune 配置
writeUP-[第五空间2019 决赛]PWN5(待进一步完善待研究内容)
Heap series _0x05: A diagram analyzes the connection between heap block allocation and FreeLists
unity中AO、metallic、roughness贴图的使用方式
客户端媒体引擎框架
FileInputStream与BufferedInputStream的区别
Go语言基础(十二):并发编程
FFmpeg源码剖析-通用:ffmpeg_parse_options()
js实现滑动条验证
二维数组的探究
#define DEBUG(format, ...) 以及 #、##、__VA_ARGS__和##__VA_ARGS__的作用
js和jq实现点击小眼睛后密码显示与隐藏切换
如何保证测试用例的覆盖率
7z解压软件(小巧好用)。百度云下载链接
Dolphin Scheduler 2.x版本部署篇
Go语言基础(十四):单元测试
Heap series_0x08: NT heap debug support_Discover now debug support (DPH)
(一)BFC
数据库导入导出sql数据库文件









