LeetCode120. 三角形最小路径和—两种动态规划思路与实现

本文介绍了一种求解三角形最短路径的问题,通过自顶向下和自底向上的动态规划方法,提供了详细的算法思路及优化技巧,并附带实现代码。

题目概述:

在这里插入图片描述
题目链接:点我做题

题解

一、自顶向底的dp

  我们把这个三角形每个点的下标视为矩阵中的点,那么可以定义 f ( i , j ) f(i,j) f(i,j)为自 ( 0 , 0 ) (0,0) (0,0)点到 ( i , j ) (i,j) (i,j)点的最短路径,状态转移方程就是考虑到上一层的每个点的最短路径已经计算过的情况下,这一层的值怎么得来。
  由于下一层比上一层多出一个元素,所以下一层有两个点是特殊的,一个是下标为0的点,它只能由上一层下标为0的点到达,另一个是下标为当前层数i的点,它只能由上一层的下标为 i − 1 i-1 i1的点到达;其他点(下标为j)均可以由上一层的下标为 j − 1 j-1 j1的点和下标为 j j j的点到达,因此状态转移方程就得到了:
1. j = = 0 , f ( i , j ) = f ( i − 1 , 0 ) + t r i a n g l e [ i ] [ j ] 最 左 边 上 只 能 从 上 一 层 的 最 左 边 上 来 2. j = = i , f ( i , j ) = f ( i − 1 , j − 1 ) + t r i a n g l e [ i ] [ j ] 最 右 边 上 只 能 从 上 一 层 的 最 右 边 上 来 3. 其 他 f ( i , j ) = m i n ( f ( i − 1 , j − 1 ) , f ( i − 1 , j ) ) + t r i a n g l e [ i ] [ j ] 1.j == 0, f(i,j) = f(i - 1, 0) + triangle[i][j] 最左边上 只能从上一层的最左边上来\\ 2.j == i, f(i,j) = f(i - 1, j - 1) + triangle[i][j] 最右边上 只能从上一层的最右边上来\\ 3.其他 f(i,j) = min(f(i - 1, j - 1), f(i - 1, j)) + triangle[i][j] 1.j==0,f(i,j)=f(i1,0)+triangle[i][j]2.j==i,f(i,j)=f(i1,j1)+trian

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值