当前位置:网站首页>动态规划相关:三角形最小路径和
动态规划相关:三角形最小路径和
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、自底向上
边栏推荐
猜你喜欢
随机推荐
软件测试面试题--银行面试
Heap series _0x05: A diagram analyzes the connection between heap block allocation and FreeLists
Unity Shader零基础入门2:环境光、漫反射、高光
STL标准模板库
基于X264的动态帧率与动态码率调整的实现
二维数组的探究
fiddler工具栏及其使用
三栏布局:左右固定宽,中间自适应的几种方式
easywsclient的DEMO测试
CTF online encryption and decryption and common tools
Office365 AzureAD Intune 配置
TCP/IP协议组——完整工作过程分析
解决端口号被占用的情况
#define DEBUG(format, ...) 以及 #、##、__VA_ARGS__和##__VA_ARGS__的作用
qemu虚拟机模拟固件环境搭建
Mysql学习(三)
JS字符串对象基础操作方法
Makefile通用模板
文件IO及其函数使用
fiddler的下载与安装









